我有一个标签栏控制器,每个标签都包含一个导航控制器。
如何在选项卡中访问导航控制器中的特定视图控制器,以便我可以访问特定于视图控制器的属性?
我尝试了以下代码:
//Get the navigation controller of the 3rd tab
self.tabController.selectedViewController
= [self.tabController.viewControllers objectAtIndex:2];
//Attempt to retrieve the viewcontroller I want from the tabcontroller
SomeViewController *svc = (SomeViewController *)self.tabController.selectedViewController;
//Attempting to access a BOOLEAN property in svc viewcontroller
svc.someProperty = YES;
上面的代码失败了,因为似乎“self.tabController.selectedViewController”返回了一个导航控制器。如何扩展代码以便我可以访问“svc.someProperty”?
答案 0 :(得分:6)
您可以使用-topViewController
从导航控制器获取视图控制器(如果使用模态视图控制器,则使用-visibleViewController
。)
答案 1 :(得分:4)
如果self.tabController.selectedViewController
是导航视图控制器,则可以使用以下方式访问当前可见的控制器:
和顶视图控制器使用:
如果这不允许你到达SomeViewController
,你可以遍历导航控制器堆栈上推送的控制器列表:
答案 2 :(得分:1)
由于视图控制器是返回的UINavigationController(SVC)的子视图,因此您只需向其发送以下方法[svc topViewController];
即可。这应该返回视图控制器,然后您应该能够访问该属性。