6

私は、Xcodeのストーリーボードを介してUIの大部分がセットアップされているアプリケーションで作業しています。私がしたいことの1つは、Interface Builder経由でアクセスできるデフォルトの "Stencilled"イメージではなく、TabBar上のUITabBarItemsの "Finished"イメージを指定することです。ストーリーボードを使用しているときに完成したTabBarイメージを設定しますか?

ここで私はawakeFromNibでこれをやっていますが、物事がストーリーボードからアーカイブ解除されたときに実行する必要があるので、私は現在initWithCoderを使用するべきかどうか確信しています:それは最高の問題ですか?

- (void)awakeFromNib { 
    [super awakeFromNib]; 
    UIImage *tabIn = [UIImage imageNamed:@"TAB_IN"]; 
    UIImage *tabOut = [UIImage imageNamed:@"TAB_OUT"]; 

    UITabBarItem *tabBarItem = [self tabBarItem]; 
    [tabBarItem setFinishedSelectedImage:tabOut withFinishedUnselectedImage:tabIn]; 
    [tabBarItem setTitle:@"TWO"]; 
} 

- (id)initWithCoder:(NSCoder *)aDecoder { 
    self = [super initWithCoder:aDecoder]; 
    if(self) { 
     UIImage *tabIn = [UIImage imageNamed:@"TAB_IN"]; 
     UIImage *tabOut = [UIImage imageNamed:@"TAB_OUT"]; 

     UITabBarItem *tabBarItem = [self tabBarItem]; 
     [tabBarItem setFinishedSelectedImage:tabOut withFinishedUnselectedImage:tabIn]; 
     [tabBarItem setTitle:@"TWO"]; 
    } 
    return self; 
} 

OR

は私が initWithCoder:がアウトレットとアクションがまだフックアップされていません(ストーリーボードに含まれる)ニブからアンアーカイビングのオブジェクトの開始時に呼び出されることを理解しています。また、アーカイブ解除プロセスの最後に awakeFromNibが呼び出され、viewControllerが使用可能になったことを知らせることも理解しています。 awakeFromNibを使用しても、アウトレットとアクションがまだ繋がっていない問題にぶつからないようにするには問題がないかもしれませんが、自分のやりたいことだけに依存しているというのが私の気持ちです。

EDIT:

awakeFromNibとその逆に並置としてあなたがinitWithCoder:を使うだろうか状況、私はこれを言い換えるてみましょうか?

答えて

2

編集前の段落であなた自身の質問に既に答えているようです。オブジェクトはawakeFromNibメッセージを受信すると

が、すべての出口インスタンス変数が設定されていることが保証されていることを

documentation状態。

あなたの初期化コードでIBOutletアイバーズにアクセスする必要があるのであれば、あなたはawakeFromNib方法でそれをしなければなりません。

NSCoding documentationに従ってNSCodingプロトコルでデコードされたオブジェクトのための適切な初期化剤法であるので、私はコンセントにアクセスする必要がない場合、私はケースにinitWithCoder:を好むが:

initWithCoder:それ自体を初期化するためにオブジェクトを指示します提供されたコーダ内のデータから、私が持っているとき、それは私の初期にアクセスコンセントに差やケースに多くをしない、など、それは、他の初期化メソッドを置き換え、ただし注意点としてオブジェクト

ごとに一度だけ送信されますコード、私は簡略化のためにawakeFromNibinitWithCoder:の両方を実装していません。だからアウトレットが関わっているのであれば、私は通常awakeFromNibを実装し、そこですべての初期化を行います。

+0

ありがとうエゴール、大変感謝しています。 – fuzzygoat

関連する問題