1

私のテーブルビューでcellForRowAtIndexPath私は持っています

MenuItemCell *cell = (MenuItemCell *)[[[NSBundle mainBundle] loadNibNamed:@"ResultCell" owner:nil options:nil] objectAtIndex:0];

xibを使用しないように指示する前に:セルが同一に見える必要がある複数のテーブルビューがあります。xibを使用することが、これを達成するための最良の方法であるように思われました。

問題のResultCellxibは、によって「所有」されていMenuItemCellます。MenuItemCellの別のサブクラスのサブクラスですUITableViewCell

問題は次のとおりです。セル割り当て行の直後にブレークポイントを設定しました。lldbの結果は次のとおりです。

(lldb) po [cell class]
(id) $3 = 0x00b6b5fc UITableViewCell

なぜ私のセルはaUITableViewCellであり、ではないのMenuItemCellですか?(または多分それはそれpoを理解する正しい方法であり、そうではありませんか?)

4

3 に答える 3

3

Xcode / Interface BuilderにXIBからMenuItemCellをインスタンス化するように指示していない可能性があるため、デフォルトの実装であるUITableViewCellを使用します。オブジェクトをキャストすると、コンパイラはそれが指定されたクラスのインスタンスであると見なすだけであることに注意してください。オブジェクトを魔法のようにクラスのインスタンスに変換することはありません。(言い換えると、これは実行時の式ではなく、コプマイル時の式です。)

于 2012-05-02T20:11:53.543 に答える
1

これは、NIBファイルの所有者クラスを設定する方法のスクリーンショットです。

ここに画像の説明を入力してください

于 2012-05-02T20:21:31.673 に答える
0

isKindOfClassメソッドを使用すると、オブジェクトが特定のクラスに属していることをいつでも確認できます。

[セルisKindOfClass:[MenuItemCellクラス]]

また、H2CO3が言ったように。所有者クラスをMenuItemCellに設定するのを忘れた可能性があります。

于 2012-05-02T20:16:35.803 に答える