将“编辑”发送到 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)发送到另一个视图控制器?

如何将标签中的数据从表视图行操作发送到视图控制器?

在单独的 ViewController 中编辑 tableView 条目,并将编辑后的数据传回 tableView

无法编辑 UITableViewCell y-offset

将信息发送到另一个视图控制器