2013-04-17 13 views
5

iOS6とストーリーボードを使用して、私は3つのセクションを持つUITableViewControllerを持っています。静的/動的コンテンツが混在するUITableViewControllerのNSRangeException

最初の2つのセクションは静的で、3番目のセクションは動的です。

私はきちんとセクション0と1のためにスーパーに延期する、とまだ部2

のための私のデータモデルから適切な値を返すためにnumberOfRowsInSectioncellForRowAtIndexPathheightForRowAtIndexPathをオーバーライドしている、私は(メインでNSRangeExceptionを得ます)私のデータの行数が3番目のセクションのためにストーリーボードで構成された行数を超えた場合:

'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]' *** First throw call stack: (0x22f3012 0x178ae7e 0x22a8b44 0xb0ece4 0x8feee3 0x784f13 0x71940c 0x784a7b 0x789919 0x7899cf 0x7721bb 0x782b4b 0x71f2dd 0x179e6b0 0x558fc0 0x54d33c 0x54d150 0x4cb0bc 0x4cc227 0x4cc8e2 0x22bbafe 0x22bba3d 0x22997c2 0x2298f44 0x2298e1b 0x26867e3 0x2686668 0x6ceffc 0x2c4d 0x2b75) libc++abi.dylib: terminate called throwing an exception

スーパークラスのメソッドは、私は発生からこの例外を防ぐためにオーバーライドする必要がありますか?

答えて

11

Iが欠落した実装は以下のとおりであった:

-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath { return 0; }

これは一つの静的プロトタイプのUITableViewControllerに動的挙動を注入するためにオーバーライドしなければならない4つの方法の全存在することを意味する。

  1. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionが;

  2. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

  3. -(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

  4. -(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath

希望これは誰か、いくつかの時間を節約できます。

+0

あなたは正しいです。私は決してそれを推測することはありませんでした。最後の24時間同じ問題があり、私の髪を切り取っていた。ありがとう!!!!!!!!!! – nurider