现在要实现的是我的彩票里面的设置部分,很明显这是一个tableview,但是如果写进plist文件会显得很麻烦要关系到推送的控制器和里面的子cell。所以要把他独立的变成模型写出来。大概可以分为2块 一块是基本的section,然后是里面的cell。创建一个MJBaseSettingViewController 存放基本的tableview的代码;。
#import "MJBaseSettingViewController.h"
#import "MJSettingGroup.h"
#import "MJSettingCell.h"
#import "MJSettingArrowItem.h"
#import "MJSettingSwitchItem.h"
@interface MJBaseSettingViewController ()
@end
@implementation MJBaseSettingViewController
/**
* 重写init方法使tableview以组的形式创建
*/
-(id)initWithStyle:(UITableViewStyle)style
{
return [super initWithStyle:UITableViewStyleGrouped];
}
/**
* 创建可变数组存放group
*/
-(NSMutableArray *)data
{
if (nil == _data) {
_data = [NSMutableArray array];
}
return _data;
}
//data中group的组数决定section
#pragma mark tableview datascoure
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.data.count;
}
在这里创建组的模型 foot 。head和items (数组)items存放里面有多少行
#import <Foundation/Foundation.h>
@interface MJSettingGroup : NSObject
/**
* 头部标题
*/
@property (nonatomic, copy) NSString *header;
/**
* 尾部标题
*/
@property (nonatomic, copy) NSString *footer;
/**
* 存放着这组所有行的模型数据(这个数组中都是MJSettingItem对象)
*/
@property (nonatomic, copy) NSArray *items;
@end
#import "MJSettingGroup.h"
@implementation MJSettingGroup
@end
然后在MJBaseSettingViewController 中
//group中item决定多少row
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
MJSettingGroup *group = self.data[section];
return group.items.count;
}
没东西的 箭头 开关 标签 块的好处是在在内部封装代码,不像函数一样要在外面定义然后在里面调用 这里的option为了在后面的代码中添加一个更新的提示
#import <Foundation/Foundation.h>
typedef void (^MJSettingItemOption)();
@interface MJSettingItem : NSObject
/**
* 图标
*/
@property(nonatomic, copy)NSString* icon;
/**
* 标题
*/
@property(nonatomic, copy)NSString* title;
/**
* 点击这个cell需要做什么事情
*/
@property(nonatomic, copy)MJSettingItemOption option;
+ (instancetype)itemWithIcon:(NSString *)icon title:(NSString *)title;
+ (instancetype)itemWithTitle:(NSString *)title;
@end