10

xib を持つビューを初期化するには、initWithCoder関数を使用します。しかし、カスタム パラメーターを使用して xib を初期化する必要がある場合はどうすればよいでしょうか。

私はこのようなものが必要です:

- (id)initWithCoder:(NSCoder *)aDecoder
           andTitle:(NSString *)titleString
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        self.titleLabel = titleString;
    }
    return self;
}

そしていつ私はそれを呼びますか?後awakeFromNib?

4

2 に答える 2

11

initWithCoder:メソッドは制御できないプロトコルで定義されているため、そのようにメソッドを変更することはできません。setTitle:代わりに、オブジェクトが作成された後に、おそらく でawakeFromNib、または所有しているコントローラーからメソッドを呼び出す必要があります。

于 2013-08-04T11:07:21.817 に答える
9

通常、自分で initWithCoder を呼び出さないため、カスタム パラメーターを渡すことはできません。そのメソッドは nib ローディング メカニズムによって呼び出され、それを制御することはできません。

あなたは確かにそれをawakeFromNibから呼び出すことはありません.オブジェクトはその時点ですでに初期化されているため、再呼び出しすることはできません.

最も簡単な解決策は、カスタム パラメーターをプロパティとして公開し、ビューを作成した後に設定することです。

于 2013-08-04T11:10:19.673 に答える