1

ストーリーボード ベースの iOS アプリケーションのいくつかの基本に苦労しています。

NIB ファイル (xib) で構築されたいくつかの UIView をロードするのが好きです。ビューをロードすると、initWithCoderメソッドが呼び出されます。

ここで、「グリーン」ビューをロードするのが好きです。他の初期化をいくつか入れることができることを読みましたinitWithCoderが、「新しい」オブジェクトのみであり、メモリの原因での self.backgroundColor のように、View 自体に関することは何もありません (オブジェクトはその時点で完全に初期化されていない可能性があります)点)。

ビュークラス自体に、のsetBackgroundColorようなものを追加するのに最適な場所はどこですか?setCornerRadius

4

1 に答える 1

0

私はこのようにやっています:

NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:nil options:nil];
self = [nibViews objectAtIndex: 0]; //here it would be best practice to loop through nibViews and get the first view that is member of your class. 

また、nib ファイルのビューはMyCustomViewではなくとして設定されますUIView。これらの 2 行の後に、必要な値を設定できます。ただし、たとえばスーパーのフレームを設定すると、xib ファイルの値によって上書きされることに注意してください。そのため、ペン先をロードする前ではなく、ロードした後にすべてを設定することをお勧めします。

私の知る限り、そのままUIViewロードするviewDidLoadためのコールバックはありませんUIViewController

お役に立てれば。

乾杯!

編集:

次のようなことができます。

- (id)initWithInfo:(MyInfoClass *) selectedInfo Body:(NSString *) _body
{
    if ((self = [super init]))
    {
         NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"MyCustomClass" owner:nil options:nil];
         self = [nibViews objectAtIndex: 0];

         [self setInfo:selectedInfo];
         [self setBody:_body];
    }
}

そして、そのinitWithInfo: Body:方法を使用するだけです。

于 2012-10-31T08:02:23.433 に答える