1

iOS 7 で実行すると、セクションと行をスムーズにリロードするテーブルビューが遅くなりました。テーブルビュー テーブル全体をリロードすると、瞬時にロードされますが、reloadRowsAtIndexPaths または reloadSections (UITableViewRowAnimationNone を使用) を呼び出すと、完了するまでに約 1 秒かかります。

アプリのこのセクションではまだ AutoLayout を使用していません。セルは、対応するカスタム クラスを含む個別の Xib ファイルに配置されます。

4

1 に答える 1

1

セル ビューで自動レイアウトを有効にしていますか? テーブル ビューが表示されていないときに (たとえば、詳細ビュー コントローラーがプッシュされたとき)、テーブル ビューをリロードしていますか? これは既知のバグのようです。この質問/回答を参照してください。Apple バグレポート: rdar://15175803

基本的に、完全ではありませんが満足のいく結果が得られる多層ソリューションがあります。まず、これは常に当てはまります。テーブル ビュー セルで制約を最適化します。制約を動的に変更する場合は、不必要なレイアウトや描画を引き起こしていないことを確認してください。次に、テーブル ビューが表示されていない場合は更新しないでください。これはハックのように感じますが、他に選択肢はありません (1 つあるのですが、自動レイアウトを無効にする必要があり、これはまったく最適ではないため、無視しましょう)。テーブルビューが非表示であることを示すtableView.windowプロパティがの場合、View Controller でテストできます。nil非表示でない場合は通常どおり更新しますが、非表示の場合は更新しません。テーブルが更新されたことを示すフラグを設定するだけです。viewWillAppear:オンコール_reloadDataテーブルを更新します。選択したインデックスパスのテーブル ビューをクエリし、データをリロードした後にそれらを再度選択することで、選択を保持できます。

于 2013-11-09T00:55:59.500 に答える