0

UITableView画面が最初にロードされ、 に座っているときに設定されている があります(0,44)。アクションが実行された後、テーブルがリロードされ、フレームを全画面表示に調整する必要があります(0,0)

私が走るとき

self.table.frame = CGRectMake(0, 0, self.table.frame.size.width, self.table.frame.size.height + 44);

次のエラーが表示されます。 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 4 beyond bounds for empty array'

358また、高さの値を fo以下にハードコーディングするとコードが実行されることにも気付きましたが、それ359以上の場合は同じエラーが発生します。

4

1 に答える 1

0

エラー メッセージは、配列の境界を超えていることを示しているため、UITableViewDataSource および UITableViewDelegate メソッドのすべての部分で配列にアクセスしている場所を確認し、それらのいずれかが問題を引き起こす可能性があるかどうかを確認してください。ブレークポイントと NSLog() を使用して、クラッシュが発生した場所を確認します。

もし私があなただったら、私はまず を見ることから始めtableView:cellForRowAtIndexPath:ます。配列に多くのアイテムがあるかどうかを最初に確認せずに、配列からアイテムをプルしている行がどこかにあるでしょう。テーブルが小さいフレームにある場合は、表示される行が少なくなるため、(まだ) 範囲外にはなりません。その後、フレームを拡大すると、テーブルは配列内の要素よりも多くの行を表示しようとするため、クラッシュが発生します。

于 2012-07-25T18:12:16.953 に答える