繁体   English   中英

如何从标签栏 controller 访问视图 Controller?

[英]How to access View Controller from Tab bar controller?

我有一个标签栏 controller,每个标签都包含一个导航 controller。

如何在选项卡中的导航 controller 中访问特定视图 controller,以便我可以访问特定于视图 controller 的属性?

我尝试了以下代码:

//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”似乎返回了一个导航 controller。 如何扩展代码以便可以访问“svc.someProperty”?

您可以使用-topViewController从导航 controller 获取视图-visibleViewController (如果您使用的是模态视图控制器,则可以使用 -visibleViewController)。

如果self.tabController.selectedViewController是您的导航视图 controller,那么您可以使用以下命令访问当前可见的 controller:

visibleViewController

和顶视图 controller 使用:

topViewController

如果这不允许您访问SomeViewController ,您可以遍历导航 controller 堆栈上推送的控制器列表:

viewControllers

由于视图 controller 是返回的 UINavigationController(SVC) 的子视图,您可以将其发送以下方法[svc topViewController]; . 这应该会返回给您 controller 视图,然后您应该能够访问该属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM