0

をサブクラスUITableViewController化し、セグエを通じてインスタンス化しています。

テーブルビューコントローラーが正しくインスタンス化されviewDidLoadnumberOfSectionsInTableView呼び出されているようです。実際、は2 回numberOfSectionsInTableViewも呼び出されます。最初に呼び出されたときは の有効な値を持ち、2 回目に呼び出されたとき (最初の呼び出しの直後)は です。tableViewtableViewnil

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [super numberOfSectionsInTableView:tableView] + 1 ;
}

Interface Builder で設定した静的セル (セクション 0、行 0) を使用しており、2 番目のセクション (セクション 1) に動的な行数を追加しています。そのため、 に 1 を追加しました[super numberOfSectionsInTableView:tableView]。親の tableView クラスにはカスタム コードはありません。すべてが Interface Builder で設定されているだけです。

すべてのコンセントが正しく設定されているようです:

ここに画像の説明を入力

コードの実行が続くと、アプリがクラッシュし、次のエラー メッセージが表示されます。

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]

エラーの原因について何か考えはありますか?

4

1 に答える 1

1
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [super numberOfSectionsInTableView:tableView] + 1 ;
}

基本的には、 get が呼び出されるたびnumberOfSectionsInTableViewにテーブル内のセクションの数が 1 ずつ増えることを意味しreturn 2;ます。

さて、あなたのエラーに。正確なコンテキストやエラーが発生した場所がわからないことを考えると、言うのは難しいですが、cellForRowAtIndexPathデータソースが nil または空の配列であるためにクラッシュが発生したと最初に推測します。

于 2012-12-07T18:38:10.703 に答える