私はこれが古い質問であることを知っています。しかし、会話を読んだ後、私は何らかの意見を述べなければならないと感じました. これは、あなたがここで扱っている多層的な問題です。
まず、「プリロード」と言うとき、正確にはどういう意味ですか? あなたはあなたに電話dequeueReusableCellWithIdentifier
していますviewWillAppear
か?または、init
. いずれにせよ、これは受け入れられる慣行ではありません。
UITableViewCells は「再利用可能」であることを覚えておいてください。つまり、UITableView は実際には、画面外にあるUITableViewCells
ときに のアンロードとロードを処理して、パフォーマンス (メモリではなく、信じられないかもしれません) やその他のことを最適化します。本質的に、これはテーブル ビューを効率的に維持するための非常に気の利いた「ハック」です。あなたのUITableView
が遅すぎる場合は、実装ではなく、何か間違ったことをしていますUITableView
それらを「プリロード」していると言うと、使用法にすぐに危険信号が表示されます。そして、「メソッドが遅すぎる」と言うとき、そうではありません。UITableViews と UICollectionViews のデリゲート/データソース メソッドは、計算された順序で発生します。それと戦わないでください。
第二に、呼び出されないという問題についてawakeFromNib
。あなたは十分な情報を提供していません。どうやって初期化したの?ストーリーボード/ペン先で作成した場合は、init
メソッドを呼び出すべきではありません。実際、iOS6 の時点では、 からの非 nil セルが保証されていますdequeueReusableCellWithIdentifier
。