0
我有一個UITableView
,它顯示了tvOS上的數據時間表。它是通過NSFetchedResultsController
動態更新的。如何在數據更新期間保持UITableView的第一行焦點?
更新表格時,會在頂部添加新單元格。但是:先前選擇的單元格保持專注,但我需要的行爲是在數據更新後將焦點轉移到「最新」(即最上面)單元格。
我該如何做到這一點?
我有一個UITableView
,它顯示了tvOS上的數據時間表。它是通過NSFetchedResultsController
動態更新的。如何在數據更新期間保持UITableView的第一行焦點?
更新表格時,會在頂部添加新單元格。但是:先前選擇的單元格保持專注,但我需要的行爲是在數據更新後將焦點轉移到「最新」(即最上面)單元格。
我該如何做到這一點?
不知道你的代碼是什麼樣的,但你可以創建一個屬性來跟蹤表是否正在更新。
var tableViewIsUpdating = false
,如果你想正常的焦點之前還是要回到你的表視圖的第一行,您可以使用它來確定:它是否更新或不
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。