通常当UITableViewController
中嵌入的UINavigationController
从其详细信息屏幕返回时,先前选定的行的突出显示会消失。
我试图在UITableViewController
加载UIPageViewController
时尝试复制此行为,但到目前为止一直未成功。
要清楚,我在详细信息屏幕中的层次结构是:UINavigationController
> UIPageViewController
> UITableViewController
> DetailController
不会调用将deselectRow:atIndexPath:
表格视图方法放在viewDidAppear
的{{1}}作为UITableViewController
。将它放在相同的方法中,但viewDidAppear
的方法是有效的,但在选择消失之前会有明显的延迟。
有没有人设法让它正常工作?
答案 0 :(得分:0)
您指的是UITableView
或UITableViewController
我试图在a时复制这种行为 UITableViewController 由UINavigationController加载,但到目前为止都没有成功。
如果是UITableViewController
,则它具有此clearsSelectionOnViewWillAppear
属性,可以为您执行此操作。它默认为true
。
答案 1 :(得分:0)
不是理想的解决方案,但这对我有用......
表视图控制器代码更改:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.tableView.reloadData() //added this
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "appCell") as! AppTableViewCell
cell.app = apps[indexPath.row]
cell.delegate = self
cell.reset() //added this
return cell
}
表格查看单元格代码更改:
//added this method
func reset() {
shortcutTypesTableView.reloadData()
}
基本上,我正在重新加载整个顶级表视图,而在tableView(_:cellForRowAt:)
我告诉每个单元格重置,强制每个单元格的表视图也重新加载。
加载此表视图时,我的应用程序没有太多开销(至少尚未),所以我没有注意到性能差异。但是,我不认为这个解决方案对于性能来说是“理想的”。