我有一种情况,我有一个包含编辑按钮的ViewController,另一个View(它是独立的)包含我的tableview。
我目前正在以编程方式添加编辑按钮(就像使用单个视图一样)。但是,当您点击编辑按钮时,它会更改为“取消”,但表格不会进入编辑模式(所有常规方法都已启用并包含我将用于单个视图的代码)。
因此,我想知道如何从View控制器中的编辑按钮向表视图发送“消息”(如上所述是单独的)。我需要设置一个代表吗?还是有一种我可以打电话的特殊方法?
我搜索了这一点,但如果有人能帮我指向正确的方向,我会非常感激。
答案 0 :(得分:1)
我将把拥有编辑按钮的控制器称为VC1,将拥有(作为代表)的表视图的控制器称为VC2。另外,请阅读Delegation。它不是iOS开发中的可选主题。
在VC2中,声明一个名为-setTableIsEditing:(BOOL)isEditing的方法,并实现它以简单地在表视图上设置isEditing属性,如下所示:
- (void)setTableIsEditing:(BOOL)isEditing {
self.myTableView.isEditing = isEditing;
}
然后在VC1的按钮touchUpInside委托的实现中,更新一个ivar bool来跟踪编辑模式,并使用正确的参数在VC2上调用该方法:
- (IBAction)editButtonPressed {
_isEditingTable = !_isEditingTable;
[self.myVC2Instance setTableIsEditing:_isEditingTable];
}
答案 1 :(得分:0)
委托可以工作,或者您可以从按钮触摸的方法发送NSNotification,表视图将订阅该方法。然后在那里为每个单元格调用[UITableViewCell setEditing:YES animated:YES]。
答案 2 :(得分:0)
使用可以使用
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
然后实施
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
// You can use NSUserDefaults for sending information to the controllers in another view
//and you can manipulate them.
}