嵌入在PageViewController中时,取消选择UITableViewController的UITableView行

时间:2017-01-12 01:55:08

标签: ios uitableview uipageviewcontroller

通常当UITableViewController中嵌入的UINavigationController从其详细信息屏幕返回时,先前选定的行的突出显示会消失。

我试图在UITableViewController加载UIPageViewController时尝试复制此行为,但到目前为止一直未成功。

要清楚,我在详细信息屏幕中的层次结构是:UINavigationController> UIPageViewController> UITableViewController> DetailController

不会调用将deselectRow:atIndexPath:表格视图方法放在viewDidAppear的{​​{1}}作为UITableViewController。将它放在相同的方法中,但viewDidAppear的方法是有效的,但在选择消失之前会有明显的延迟。

有没有人设法让它正常工作?

2 个答案:

答案 0 :(得分:0)

您指的是UITableViewUITableViewController

吗?
  

我试图在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:)我告诉每个单元格重置,强制每个单元格的表视图也重新加载。

加载此表视图时,我的应用程序没有太多开销(至少尚未),所以我没有注意到性能差异。但是,我不认为这个解决方案对于性能来说是“理想的”。