从明细视图控制器返回后重新加载Tableview单元格-Swift

时间:2018-10-13 00:06:43

标签: ios uitableview

tableView中的每个单元格都连接到Detail View Controller,用户可以在其中收藏条目。收藏该条目时,tableViewCell中应显示一个心脏。

重新启动该应用程序后,心脏会在收藏的单元格中正确显示。但是,它仅在重新启动后显示。我相信我需要reloadRows函数,但是我找不到能够按预期工作的解决方案。

如何使reloadRows动态化,以便重新加载的行是所选的indexPath?

基本上,只要用户喜欢该条目,我希望他们能够返回tableView并看到单元格中的心脏。

一如既往地感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您需要发送首选类数组,以便将编辑内容反映到原始数组中,然后在detailVC中进行编辑,然后再返回PrevVC中

END

或使用委托/通知中心重新加载表,如果您只想重新加载已编辑的indexPath,则创建一个var并单击 didSelectRowAt 时将其保存,并以上述方式仅重新加载该索引< / p>

override func viewWillAppear(_ animated:Bool) {
   super.viewWillAppear(animated)
   tableView.reloadData()
}

使用

var index:IndexPath? 
func tableView(_ tableView: UITableView, 
     didSelectRowAt indexPath: IndexPath) { 
    index = indexPath
    // segue / push detail here 
}

答案 1 :(得分:0)

如果您在使用详细控制器时未调用reloadData,则可以将indexPath传递给该控制器,并在回退时替换tableView单元格

类似于将indexPathForSelectedRow传递到detailViewController,在那里更新数据源并使用该[passedIndexPAth]调用reloadRows

一旦显示实际代码,便可以告诉更多信息。

一些陷阱:

  • 如果在原始控制器中确实更改了数据源,则可能会引起一些问题。
  • 对tableView / dataSource的任何其他同时调用(主要是最后一个)必须正确解决。例如,如果您正在viewWillAppear
  • 上对他们做其他事情

主要思想是,每次更改屏幕时,都将dataSource传输到新控制器,并使其负责。完成上述viewController的操作后,您将返回并更新状态。如果您需要解决对数据源的一些类似更改,请在模型级别上解决它们,并将更新相应地传递给视图