MCSimpleTables 0.2.0

MCSimpleTables 0.2.0

测试已测试
语言语言 Obj-CObjective C
许可证 BSD 许可证
发布最后发布2014 年 12 月

未声明的用户 维护。



  • Matt Connolly

SimpleTables

这个库提供了一些类来帮助创建程序定义的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。