Ios 从局部视图控制器返回后重新加载Tableview单元格-Swift

Ios 从局部视图控制器返回后重新加载Tableview单元格-Swift,ios,uitableview,Ios,Uitableview,“我的tableView”中的每个单元格都连接到一个细节视图控制器,用户可以在该控制器中查看条目。当该条目是首选项时,心脏应显示在tableViewCell中 在重新启动应用程序时,心脏会正确显示在所需的单元格中。但是,它仅在重新启动后显示。我相信我需要reloadRows函数,但是我还没有找到一个能按预期工作的解决方案 如何使重新加载的行成为动态的,以便重新加载的行是选定的行? 基本上,只要用户喜欢该条目,我希望他们能够返回到tableView并看到单元格中的心脏 一如既往,我们感谢您的帮助

“我的tableView”中的每个单元格都连接到一个细节视图控制器,用户可以在该控制器中查看条目。当该条目是首选项时,心脏应显示在tableViewCell中

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

如何使重新加载的行成为动态的,以便重新加载的行是选定的行?

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


一如既往,我们感谢您的帮助

您需要发送Preferably classes项目的数组,以便将编辑反映到原始数组中,然后在detailVC中编辑它之后,再返回到PrevVC中

override func viewWillAppear(_ animated:Bool) {
   super.viewWillAppear(animated)
   tableView.reloadData()
}
或者使用delegate/notificationCenter重新加载表,如果您只想重新加载已编辑的索引XPath,则在单击didSelectRowAt时创建一个var并将其保持住,然后仅以上述方式重新加载该索引

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


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

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

可以告诉更多,一旦你将显示实际的代码

一些陷阱:

  • 如果在原始控制器中更改数据源,则对其进行变异可能会带来一些问题
  • 必须正确处理对tableView/dataSource的任何其他同时调用(主要是最后一个调用)。例如,如果您在
    视图中对他们执行其他操作,将显示

其主要思想是将数据源传输到新控制器,并使其在每次更改屏幕时对其负责。完成上述viewController后,返回并更新状态。如果需要解析对数据源的一些模拟更改,可以在模型级别解析这些更改,并相应地将更新传递给视图

我只想重新加载已编辑的indexPath,而不是整个tableView。重新加载需要在返回过程中进行。没有问题读取整个答案保持选定的索引我只是用代码更新。看起来我和你说的很像。非常感谢。
if let ind = index {
  tableView.reloadRows(at: [ind], with: .none)
}