以下のソースコードが書籍に書かれており、その通りに実装してアプリケーションを実行させたところ、「NSRangeException」が発生してしまいました。
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell"
owner:self options:nil];
cell = [nib objectAtIndex:1] ・・・a
}
デバッグをしたところ、(a)地点で例外がスローされていることが分かりました。そこでその部分について以下のような説明が書籍にありました。(著作権的に問題がありそうなので、文章はサマリーします。)
「再生利用可能なセルがなければ、nibからファイルを読み込む。objectAtIndexの呼び出しでは、Index:0の代わりにindex:1を使う。オブジェクト0はファイルのオーナーで、テーブルビューセルはindex:1に存在する。」
この文章を信じきった私は、objectAtIndexの引数が1であることが正しいと思い込んでしまい、このエラーを取り去るのに相当な時間を要しました。結果としては(a)のobjectAtIndexの引数を0にすることで正常に動作しました。なぜ、0で動作したかはこれから調べますが、書籍のサンプルコードが引数1で正しいとしている点も気になります。単なる間違いなら良いのですが。高いお金を出して書籍を購入している身としては、正しい情報を載せてほしいと願うばかりです。
0 件のコメント:
コメントを投稿