正常写法:
模仿LISettingTableViewController
抽取父类和数据存储:
在setting 的controller里 新建ILBaseTableViewController : UITableViewController
其中:
- (NSMutableArray *)dataList
{
if (_dataList == nil) {
_dataList = [NSMutableArray array];
}
return _dataList;
}
修改LISettingTableViewController,LIPushNoticeController
纪录比分直播的单元:ILSettingLabelItem : ILSettingItem
ILSettingLabelItem.h:
#import "ILSettingItem.h"
@interface ILSettingLabelItem : ILSettingItem
// label显示什么内容
@property (nonatomic, copy) NSString *text;
@end
ILSettingLabelItem.m:
#import "ILSettingLabelItem.h"
#import "ILSaveTool.h"
@implementation ILSettingLabelItem
- (void)setText:(NSString *)text
{
_text = text;
[ILSaveTool setObject:text forKey:self.title];
}
- (void)setTitle:(NSString *)title
{
[super setTitle:title];
_text = [ILSaveTool objectForKey:self.title];
}
@end
LISaveTool.h:
#import <Foundation/Foundation.h>
@interface LISaveTool : NSObject
+ (void)setObject:(id)value forKey:(NSString *)defaultName;
+ (id)objectForKey:(NSString *)defaultName;
@end
LISaveTool.m:
#import "LISaveTool.h"
@implementation LISaveTool
+ (void)setObject:(id)value forKey:(NSString *)defaultName{
[[NSUserDefaults standardUserDefaults] setObject:value forKey:defaultName];
[[NSUserDefaults standardUserDefaults] synchronize];
}
+ (id)objectForKey:(NSString *)defaultName
{
return [[NSUserDefaults standardUserDefaults] objectForKey:defaultName];
}
@end
在LISettingCell.m
@property (nonatomic, strong) UILabel *labelView;
else if ([_item isKindOfClass:[LISettingLabelItem class]]){
self.accessoryView = self.labelView;
LISettingLabelItem *labelItem = (LISettingLabelItem *)_item;
self.labelView.text = labelItem.text;
self.selectionStyle = UITableViewCellSelectionStyleDefault;
}
ILScoreNoticeViewController.m:
#import "ILScoreNoticeViewController.h"
#import "ILSettingSwitchItem.h"
#import "ILSettingGroup.h"
#import "ILSettingLabelItem.h"
#import "ILSaveTool.h"
@interface ILScoreNoticeViewController ()
@property (nonatomic, strong) ILSettingLabelItem *start;
@end
@implementation ILScoreNoticeViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// 0组
[self addGroup0];
// 1组
[self addGroup1];
// 2组
[self addGroup2];
}
- (void)addGroup0
{
ILSettingSwitchItem *notice = [ILSettingSwitchItem itemWithIcon:nil title:@"提醒我关注比赛"];
ILSettingGroup *group = [[ILSettingGroup alloc] init];
group.items = @[notice];
group.footer = @"asdsad";
[self.dataList addObject:group];
}
- (void)addGroup1
{
ILSettingLabelItem *start = [ILSettingLabelItem itemWithIcon:nil title:@"开始时间"];
_start = start;
if (!start.text.length) {
start.text = @"00:00";
}
start.option = ^{
UITextField *textField = [[UITextField alloc] init];
UIDatePicker *datePicker = [[UIDatePicker alloc] init];
// 设置模式
datePicker.datePickerMode = UIDatePickerModeTime;
// 设置地区
datePicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];
// 创建日期格式对象
NSDateFormatter *dateF = [[NSDateFormatter alloc] init];
dateF.dateFormat = @"HH:mm";
// 设置日期
datePicker.date = [dateF dateFromString:@"00:00"];
// 监听UIDatePicker
[datePicker addTarget:self action:@selector(valueChange:) forControlEvents:UIControlEventValueChanged];
// 设置键盘
textField.inputView = datePicker;
[textField becomeFirstResponder];
[self.view addSubview:textField];
};
ILSettingGroup *group = [[ILSettingGroup alloc] init];
group.items = @[start];
group.header = @"213214234324";
[self.dataList addObject:group];
}
- (void)valueChange:(UIDatePicker *)datePicker
{
// 创建日期格式对象
NSDateFormatter *dateF = [[NSDateFormatter alloc] init];
dateF.dateFormat = @"HH:mm";
_start.text = [dateF stringFromDate:datePicker.date];
[self.tableView reloadData];
}
- (void)addGroup2
{
ILSettingLabelItem *stop = [ILSettingLabelItem itemWithIcon:nil title:@"结束时间"];
stop.text = @"00:00";
ILSettingGroup *group = [[ILSettingGroup alloc] init];
group.items = @[stop];
[self.dataList addObject:group];
}
@end