将“编辑”发送到 tableview(单独的视图)
Posted
技术标签:
【中文标题】将“编辑”发送到 tableview(单独的视图)【英文标题】:Sending "Edit" to tableview (separate views) 【发布时间】:2011-06-24 13:04:34 【问题描述】:我有一种情况,我有一个 ViewController 包含一个编辑按钮,而另一个 View(它是独立的)包含我的 tableview。
我目前正在以编程方式添加编辑按钮(就像您使用单个视图一样)。但是,正如预期的那样,当您点击编辑按钮时,它会更改为“取消”,但表格并未进入编辑模式(所有正常方法都已启用并包含我将用于单个视图的代码)。
因此,我想知道如何将“消息”从视图控制器中的编辑按钮发送到表视图(如上所述是单独的)。我需要设置代理吗?或者有什么特殊的方法可以调用吗?
我已经在谷歌上搜索了很多,但如果有人能帮助我指出正确的方向,我将不胜感激。
【问题讨论】:
【参考方案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];
【讨论】:
谢谢 :) 我在代表团中读得很好,只是不确定在这种特殊情况下该怎么做,感谢您的帮助。多亏了这一切,这一切都正常了。【参考方案2】:委托可以工作,或者您可以从表格视图订阅的按钮触摸方法发送 NSNotification。然后在那里为每个单元格调用 [UITableViewCell setEditing:YES animated:YES] 。
【讨论】:
【参考方案3】:使用可以使用
- (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.
【讨论】:
这一点帮助都没有。您不是在说方法的去向,也不是在解决编辑按钮属于与 tableview 不同的视图控制器这一事实。以上是关于将“编辑”发送到 tableview(单独的视图)的主要内容,如果未能解决你的问题,请参考以下文章
将数据从容器视图中的 tableview 中的静态单元格发送到 Swift 中的视图控制器
如何将 TableView 中的选定行(JSON)发送到另一个视图控制器?