2012-02-01 9 views
1

私はここで深い水の中でVCの保有を取得しようとしています。Objective-C - UIViewController参照を取得する

私のアプリのレイアウトは次のようになります。

TabBarController(A成り立つ) - > ItemAddViewController - - > AddItemToItemViewController

(Aを保持している)> UINavController(モーダル) - > MyOwnListViewController - タブの1のための> UINavControllerは、(A成り立ちます)

多分明らかではないので、わかりやすくするために、アプリが起動するときにタブ1にあり、MyOwnListViewControllerが表示されている場合は、ナビゲーションバーの+ボタンを押して、ItemAddViewController 。そこから私はpushViewController AddItemToItemViewControllerを押します。今このビューコントローラでは、ItemAddViewControllerへの参照を取得したいと思います。

参照を取得する最も簡単な方法は何ですか?

答えて

0

AddItemToItemViewControllerのinit ***メソッドを変更し、ItemAddViewControllerの参照を渡すことができます。

例えば:AddItemToItemViewController.hで

:AddItemToItemViewController.mで

@property (nonatomic, retain) UIViewController *parentController; 

を:

@synthesize parentController; 

-(id) initWithParentController:(UIViewController *) controller{ 
    self = [super init]; 

    if(self){ 
     self.parentController = controller; 
    } 
    return self; 
} 

-(void) dealloc{ 
    [self.parentController release]; 
    [super dealloc]; 
} 

あなたItemAddViewControllerインスタンス内にコントローラを呼び出す:

UIViewController *controller = [[AddItemToItemViewController alloc] initWithParentController:self]; 
[self.navigationController pushViewController:controller animated:YES]; 
[controller release]; 
+0

私はTeddyBearの答えに1つの提案で同意します: 'retain'ではなくparentControllerプロパティで 'assign'を使用します。 –

+0

それは一つの選択肢です。しかし、 'self.navigationController.viewControllers'プロパティを通して参照を取得する方法はありませんか? –

+0

私は '[self.navigationController.viewControllers objectAtIndex:0]'でそれを手に入れました。前に 'popViewController'と呼んでいたので、前に戻りました(null)。 –

関連する問題