使用交换机控件(如提醒应用)在表格视图中添加行

时间:2014-01-15 14:03:19

标签: ios iphone objective-c

在Apple提醒应用程序中,以及提醒的详细信息屏幕中, 当您打开控件"在某个位置提醒我" 时,会添加一行"位置" (实际上是一个表格)查看单元格)。 我想在我的一个应用程序中执行相同的操作,当一个开关控件处于活动状态时,会添加2个单元格...我该怎么做? 谢谢你的帮助

3 个答案:

答案 0 :(得分:0)

在处理UISwitch更改的方法中,您可以使用-(void)reloadData重新加载完整的tableview,或者(更好)使用- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

答案 1 :(得分:0)

您可以在其中一个单元格中使用UISwitch作为附件视图。但是,您可能会遇到重复使用单元格的问题。如果只需要一行带开关,只需将UISwitch添加为TableViewController中的强属性即可。初始化控制器时必须创建它:

self.locationSwitch = [[UISwitch alloc] init];
    [self.locationSwitch addTarget:self action:@selector(handleSwitchValueChanged:) forControlEvents:UIControlEventValueChanged];

然后您可以将其用作UITableViewCell的附件视图:

cell.accessoryView = self.locationSwitch;

当切换值更改时,您必须添加(或删除)行":

-(void)handleSwitchValueChanged:(id)sender
{
    NSIndexPath* indexPath = // calculate your index path;
    if(self.locationSwitch.on) {
        [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
  }
  else {    
    [self.tableView insertRowsAtIndexPaths:@[indexPath]   withRowAnimation:UITableViewRowAnimationAutomatic];
  }
}

还要记得更新您的数据源,因此tableView:numberOfRowsInSection返回的值与self.locationSwitch的值一致。

答案 2 :(得分:0)

查看此项目

https://github.com/singhson/Expandable-Collapsable-TableView

它可能对你有帮助。