0

UITableViewtvOS のデータのタイムラインを示す があります。を介して動的に更新されNSFetchedResultsControllerます。

テーブルが更新されると、新しいセルが上部に追加されます。ただし、以前に選択したセルはフォーカスされたままですが、必要な動作は、データの更新後にフォーカスが「最新」(つまり、一番上の) セルに移動することです。

どうすればこれを達成できますか?

4

1 に答える 1

0

コードがどのように見えるかはわかりませんが、プロパティを作成して、テーブルがアクティブに更新されているかどうかを追跡できます。

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
}

プログラムでフォーカスを更新する方法の詳細については、こちらを参照してください。

于 2016-07-25T21:19:49.957 に答える