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