0

UILabelをサブクラス化しようとしているので、指定されたパラメーターがNSNULLの場合、セッターsetTextがnullをチェックして、これを回避します。[NSNull isEqualToString:]:認識されないセレクターがインスタンスに送信されます

コードは以下の通りです。デバッガーをステップスルーしましたが、呼び出した新しいセッターには入りませんでした。

    [someSubClassLabel setText:someValueWhichMayBeNull];

ここで、someSubClassLabelはUILabelWithNULLHandlerです。

.hで

#import <UIKit/UIKit.h>
@interface UILabelWithNULLHandler : UILabel
- (void) setText:(NSString *) newText;
@end

.mでメソッドを定義しました:

- (void) setText:(NSString *) newText
{
    if(![newText isKindOfClass:[NSNull class]])
    {
        super.text = newText;
    }
    else
    {
        super.text = @"";
    }
}

編集:nilを処理するコードを追加できると思いますが、当面は、NSDictionaryから取得したNSNUllを処理しています。

4

1 に答える 1

0

@HotLicksは正しかった。ストーリーボードにはまだUILabelがあります。IdentityInspectorのCustomClassの下に新しいクラス名を設定する必要があります。

于 2013-02-26T12:02:40.383 に答える