私はちょうど解析しているので、私はメモリに正常に読み込むことができる約800 JSONエントリを持つルックアップタイプのアプリをやっています単純なモデルとして動作するいくつかのオブジェクトにプレーンテキスト。 Swift 2/Cocoa:大規模なアイテムコレクションとその差し迫ったUIアップデートのための良い練習
は、だから私が試した:しかし、私は物事が遅くなるところがベストプラクティスであるとのUIの終わり、に対処するために非常になど、スクロールしようとしているのか分かりません番号付きのボタンでページネーションを実装すると動作しますが、UIが更新をロックして、NSCollectionView
の更新中にページが1秒間に衝突します。
クリックボタンが
@IBAction func changePage(sender: NSButton) {
let newPage = Int(sender.title)
currentPageNumber = newPage!
}
public let pageSize = 200;
public var currentPageNumber : Int{
didSet{
if(fullMorphemesList.count == 0){
return;
}
loadMorphemesByPage(currentPageNumber)
}
}
項目があるロジックを起こすアクションを:ここで
は現在、初期、ページロードがViewController.swift
で発生する原因となるコードです読み込まれている:
///Load morphemes based on page number
func loadMorphemesByPage(pageNumber : Int){
let beginIndex = (pageNumber - 1) * pageSize
let endIndex = pageNumber * pageSize
loadMorphemesIntoDisplay(from: beginIndex, to: endIndex)
}
///Loads morphemes into the collection view
public func loadMorphemesIntoDisplay(from index: Int, to endIndex: Int){
let morphemesToLoad = fullMorphemesList[index..<endIndex]
collectionView.content = (Array(morphemesToLoad) as [AnyObject])
}
コードを近似的な発射順序で入れておくとよいでしょう。余計なステップがありますか? UIの残りの部分をロックせず、ビジュアルアーティファクトのない正しい順序でリストを更新するために使用できる非同期UIメソッドがありますか?
ありがとうございました!
内reuseIdentifierを使用し、理由のトンがあるかもしれません。しかし、コレクションビューに200個のオブジェクトを取得するのは、それほど遅くあってはいけません。アーティファクトの理由を知るために、私は異なる視点のCAレイヤーで遊んでいきます。 CAレイヤー(XCodeのユーティリティービュー - 埋め込まれた四角形アイコンを持つ最後のアイテムで、コレクションビューの親子のためにコアアニメーションレイヤーをチェックする)ですべてをバックアップすることから始めます。何か違いがあるかどうかを確認してください。 –