这个库提供了一些类来帮助创建程序定义的UITableView,例如在应用设置页面。
而无需处理 NSIndexPaths 以确定单元格中的行为,该库将该功能委托给一系列类
SimpleTableViewController
:一个从 SimpleTableSecitons 中查找分区的 UITableViewController 子类。SimpleTableSection
:一个包含 SimpleTableCells 数组的容器。SimpleTableCell
:一个通用的单元格 "控制器",其中单元格的配置可以委托给一个块或子类。请注意,创建所有这些对象所占用的内存比直接使用 UITableViewController 实现要多。然而,在小表中,额外对象的数量很少。这个库的目的是允许用户声明性设置表,以提高设置速度和维护性。
创建一个继承自 MCSimpleTableViewController
的视图控制器,并在其 viewDidLoad
方法中构建所需的分区和单元格。以下是一个简单设置页面的示例
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// create a section for our cells:
MCSimpleTableSection* section = [[MCSimpleTableSection alloc] init];
section.title = @"Configuration";
// create a cell with a switch in it
MCSimpleTableCell* cell = [[MCSimpleTableCell alloc] init];
cell.cellIdentifier = @"switch";
cell.configureBlock = ^(MCSimpleTableCell* cell, UITableViewCell* tableCell)
{
tableCell.textLabel.text = @"On/off setting";
UISwitch* control = [[UISwitch alloc] initWithFrame:CGRectZero];
control.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"];
[control addTarget:self
action:@selector(switchChanged:)
forControlEvents:UIControlEventValueChanged];
tableCell.accessoryView = control;
tableCell.selectionStyle = UITableViewCellSelectionStyleNone;
};
[section addCell:cell];
// create a cell with a text edit field in it.
MCSimpleTableTextEditCell* textEditCell = [[MCSimpleTableTextEditCell alloc] init];
textEditCell.cellIdentifier = @"text-edit-cell";
textEditCell.configureBlock = ^(MCSimpleTableCell* cell, UITableViewCell* tableCell)
{
tableCell.textLabel.text = @"Your name:";
MCSimpleTableTextEditCell* textCell = (MCSimpleTableTextEditCell*)cell;
textCell.textField.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"name"];
};
textEditCell.didEndEditingBlock = ^(MCSimpleTableTextEditCell* simpleCell, UITextField* textField)
{
// save changed text into defaults
[[NSUserDefaults standardUserDefaults] setObject:textField.text
forKey:@"name"];
};
[section addCell:textEditCell];
[self addSection:section];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (IBAction)switchChanged:(id)sender
{
UISwitch* control = (UISwitch*)sender;
[[NSUserDefaults standardUserDefaults] setBool:control.isOn forKey:@"switch"];
}
该库适用于 iOS 应用,并使用 ARC。它为 iOS >= 5.1 构建。
该软件根据 BSD 许可证授权。有关法律措辞,请参阅 LICENSE.md。