2012-02-01 88 views
1

我在深水中尝试获取vc的位置。Objective-C - 获取UIViewController引用

我的应用布局看起来是这样的:

TabBarController(持有) - > UINavController的选项卡1(持有) - > MyOwnListViewController - > UINavController(模态)(持有) - > ItemAddViewController - > AddItemToItemViewController

也许这不是很清楚,所以为了清晰起见,当应用程序启动时,我在标签1上,并且MyOwnListViewController可见,然后我在导航栏中按下+按钮,然后以模态方式拍摄到ItemAddViewController 。从那里我pushViewController AddItemToItemViewController。现在在这个视图控制器中,我想获得对ItemAddViewController的引用。

什么是最简单的方法来获得它的参考?

回答

0

您可以修改AddItemToItemViewController的init ***方法,并将它传递给ItemAddViewController上的引用。

E.G:

在AddItemToItemViewController.h:

@property (nonatomic, retain) UIViewController *parentController; 

在AddItemToItemViewController.m:

@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的回答与一个建议:使用'assign'与parentController属性,而不是'保留'。 – 2012-02-01 17:29:58

+0

这是一种选择。但是,我没有办法通过'self.navigationController.viewControllers'属性获得引用吗? – 2012-02-01 17:35:08

+0

我用'[self.navigationController.viewControllers objectAtIndex:0]'得到了它。它之前正在返回(null),因为之前我调用了“popViewController”。 – 2012-02-01 17:48:31