1

私はこれを見回しましたが、このエラーはまったく異なる問題に取り込まれているようです。これが私のコード クリップです。さらに必要な場合は教えてください。これは、を使用してテーブルの最後のセルのサイズを設定していますUITableView

- (CGFloat)tableView:(UITableView *)tableView
 heightForRowAtIndexPath:(NSIndexPath *)indexPath
 {
     int returnValue = 44;
     int numRows = [tableView numberOfRowsInSection:[indexPath section]];
    if (!([indexPath row] ==  numRows - 1)) {
        returnValue = 60;
    }
    return returnValue;
 }

コード内のすべての行をコメントアウトして[tableView numberOfRowsInSection:[indexPath section]]、エラーがスローされることを確認しました。何か案は?

編集: tableView を呼び出すたびに、このメソッドを呼び出すすべてのセルが再描画され、このメソッドがこのメソッドを呼び出して吐き気を催すように見えます。メソッドのドキュメントでこれを見つけました:

「テーブル ビューが表示されるたびに、各行のデリゲートが呼び出さtableView:heightForRowAtIndexPath:れるため、多数の行 (約 1000 以上) を持つテーブル ビューで重大なパフォーマンスの問題が発生する可能性があります。」

これは、これらのメソッドを呼び出すことができないということですか?

編集2:ここで私の答えを見つけました

4

3 に答える 3

0

あなたのコードの問題が

int numRows = [tableView numberOfRowsInSection:[indexPath section]];

セクション内の行数を設定すると、静的な値を返すカウントを持つ配列がある場合があります。したがって、行数を取得するには、その配列カウントまたはその静的値を使用します。問題が解決することを願っています。

于 2013-01-01T01:10:21.813 に答える
0

.h ファイルで tableView と宣言されたプロパティはありますか。その場合は、関数内のローカル UITableView 変数の名前を変更してみてください。それ以外は、Peter が numberOfSectionsInTableView: の戻り値について正しいと思います。

于 2012-12-31T21:30:57.163 に答える
0

このエラーは常に 1 つのことを示しています。つまり、アプリケーションがアクセスできないメモリにアクセスしようとしました。これは通常、アプリケーションが不適切なポインターを逆参照しようとすることにつながります。この場合、不良ポインタは または のいずれtableViewindexPathです。それらが NULL であるかどうか、または既に解放されているかどうかを確認します (NSZombies をオンにすると、既に解放されているかどうかを確認するのに役立ちます)。

于 2012-12-31T21:05:22.187 に答える