私はregisterNib:forCellReuseIdentifier:を使用して nib b/c からセルをロードしています。これにより、いつでも [tableView dequeueReusableCellWithIdentifier:] からセルを取得できるため、定型コードを減らすことができると言われました。
私は常にセルを取得しますが、問題は、IBAction (セル内のボタン) が例外「NSInvalidArgumentException」を発生させて失敗し始めたことです。理由: xxx認識されないセレクターがインスタンスに送信されました。
registerNib:forCellReuseIdentifier: の呼び出しを削除し、通常どおりこれらのコードを追加すると (以下)、すべて正常に動作します。したがって、問題はこの呼び出しによって引き起こされたと思います。
それで、私は何を間違えましたか?
ところで、セルnibファイルのファイル所有者をテーブルビューコントローラーに設定しました。この場合、「IOS 5 のプログラミング」では「nib でファイルの所有者クラスを指定する必要はありません」とありましたが、IBAction を設定する必要があるため、まだ設定しています。これが問題を引き起こすとは思いませんよね?
//The "old" codes without calling registerNib:forCellReuseIdentifier:
UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:@"MyCell"];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCell"
owner:self
options:nil];
cell = [nib objectAtIndex:0];
...