2016-05-17 4 views
2

コードでビューにUIコンポーネントを追加しようとしていますが、ポップアップビュー機能を使用してビューに戻るまでは正常に機能しますコードで追加されたコンポーネントが削除されている間は、Interface Builderがまだ存在します。 (VCでサブビューを印刷しようとしましたが、存在しませんでした)。再ロード後にビューにコードによるサブビューを追加しないでください

私は行方不明ですか?

SharedDataObject.m

@property (retain, nonatomic) UIImageView *brandLogoImageView; 
@property (retain, nonatomic) UILabel *brandNameLabel; 

ViewController.m

- (void)initUI { 
    if ([[SharedDataObject shared]noLogo]) { 
     [[[self view] viewWithTag:13]addSubview:[[SharedDataObject shared] brandNameLabel]]; 
    } 
    else 
    { 
     [[[self view] viewWithTag:13]addSubview:[[SharedDataObject shared] brandLogoImageView]]; 
    } 

    [_brandMessageLabel setText:[[[SharedDataObject shared] loginObject] promotion]]; 
} 

- (void)viewDidLoad { 
    [self initUI]; 
} 
+0

didAppear、willAppear、willDisappearのような他のviewCycleメソッドをオーバーライドしますか? – Shubhank

+0

のコードは - (IBAction)popViewController:(id)sender { [self navigationController] popViewControllerAnimated:YES]; } と私はオーバーライドwillAppear、willDisappear – OXXY

+0

他のライフサイクルメソッドコードも表示してください – Shubhank

答えて

2

私はこのビューを使用していると推測しています。あなたがプッシュしたビューコントローラに [[SharedDataObject shared] brandLogoImageView] です。

UIKitフレームワークでは、各ビューに対して1つのスーパービューしか許可されません。したがって、両方のViewControllerで画像を表示するには、別の画像ビューを再追加または使用する必要があります。

+0

それは正しいです私は確かに私はあなたが私がナビゲートしている各ビューに利得を再追加する必要があるという意味ですか? – OXXY

+1

他のViewControllerで同じビューを再利用するのが最善の方法です。ビューではなく、イメージデータを再利用する必要があります。しかし、同じビューを使用する場合は、再度追加する必要があります。 – cekisakurek

0

viewDidAppear/viewWillAppearメソッドでビューコンポーネントを追加しようとします。 viewcontrollerのviewDidApperメソッドでinitUIメソッドを呼び出すことを意味します。

+0

これはうまくいくと私はそれをテストしましたが、なぜこれが起こるのか知りたいですか? – OXXY

+1

ビューは複数のスーパービューを持つことができないためです。下の私の答えを参照してください。 – cekisakurek

関連する問題