私はiPad
アプリを開発していますが、tableView
を提示すると、heightForRowAtIndexPath
というメッセージが各行に複数回呼び出されているので、この問題を発見しましたか?プレゼンテーションを表示する前にheightForRowAtIndexPathが何回呼び出されていますか? Objective-c
たとえば、10行ある場合、メソッドは30回呼び出されます。
私はiPad
アプリを開発していますが、tableView
を提示すると、heightForRowAtIndexPath
というメッセージが各行に複数回呼び出されているので、この問題を発見しましたか?プレゼンテーションを表示する前にheightForRowAtIndexPathが何回呼び出されていますか? Objective-c
たとえば、10行ある場合、メソッドは30回呼び出されます。
一度呼び出されると異なり、numberOfRowsInSection
はセクションごとに1回呼び出され、各行にheightForRowAtIndexPath
が呼び出されます。一般に、コンポーネントは、作成する必要がある行の数(割り当てが必要な行セルの数に変換される)を調べる必要があるため、合計高さが画面の領域をカバーするのに十分な数になるまで、heightForRowAtIndexPath
を呼び出し続けます。スクロールの行数を増やす
あなたの状況では、画面がテーブルの約30行に収まるくらい高いようです。したがって、あなたはheightForRowAtIndexPath
に30コールを得る。これらのコールには、cellForRowAtIndexPath
への呼び出しがほぼ続きます。
テーブルビューが表示されるたびに、各行のデリゲートのtableView:heightForRowAtIndexPath:
が呼び出されます。そのため、テーブルビューをスクロールすると、このメソッドが呼び出されます。システムがセルをレイアウトすると、このメソッドも呼び出されます。
、
方法は、デリゲートは、様々な高さの行を指定することを可能にします。このメソッドが実装されている場合、返される値は、指定された行のUITableViewのrowHeightプロパティに指定された値をオーバーライドします。
パフォーマンスに影響があります。 tableView:heightForRowAtIndexPath:rowHeightプロパティの代わりに使用します。 テーブルビューが表示されるたびに、その 行のデリゲートで tableView:heightForRowAtIndexPath:を呼び出します。これにより、多くの行(約1000以上)のテーブル ビューで大きなパフォーマンスの問題が発生する可能性があります。 。
したがって、あまりにも多くの行がある場合は、このメソッドを実装しない方がよいでしょう。
このメソッド呼び出しは、スクロールビュースクロールの呼び出しで、スクロール後にこのメソッド呼び出しが表示されることを意味します。 –
これはなぜ問題ですか?デリゲートメソッドは、デリゲートユーザー(テーブルビュー)が必要と判断するのと同じくらい頻繁に呼び出されます。 – Avi
私は3行のprobがない場合、私は10000行を持っているので?一度に – apollo9