gpt4 book ai didi

swift - 如何在数据更新期间保持 UITableView 的第一行聚焦?

转载 作者:行者123 更新时间:2023-11-30 13:12:42 27 4
gpt4 key购买 nike

我有一个 UITableView,它显示 tvOS 上的数据时间线。它通过 NSFetchedResultsController 动态更新。

更新表格后,新单元格将添加到顶部。但是:之前选择的单元格保持焦点,但我需要的行为是在数据更新后将焦点转移到“最新”(即最上面)单元格。

我怎样才能实现这个目标?

最佳答案

不确定您的代码是什么样的,但您可以创建一个属性来跟踪表是否正在主动更新。

var tableViewIsUpdating = false

您可以使用它来确定是否想要正常焦点之前或返回表格 View 的第一行:

override var preferredFocusedView: UIView?{
get {
if updating {
return self.tableView.cellForRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0))
}
return super.preferredFocusedView
}
}

然后在您的 NSFetchedResultsControllerDelegate 中设置是否正在更新:

func controllerWillChangeContent(controller: NSFetchedResultsController){
self.tableViewIsUpdating = true
}

func controllerDidChangeContent(controller: NSFetchedResultsController) {
self.setNeedsFocusUpdate()
self.updateFocusIfNeeded()
self.updating = false
}

您可以找到更多信息here关于如何以编程方式更新焦点。

关于swift - 如何在数据更新期间保持 UITableView 的第一行聚焦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com