获取另一个选项卡';当前选项卡栏中的viewcontroller变量-iOS-Swift
我有一个层次结构如下的tabBarController 塔巴控制器获取另一个选项卡';当前选项卡栏中的viewcontroller变量-iOS-Swift,ios,swift,uiviewcontroller,uitabbarcontroller,uicontainerview,Ios,Swift,Uiviewcontroller,Uitabbarcontroller,Uicontainerview,我有一个层次结构如下的tabBarController 塔巴控制器 选项卡1->包含导航控制器(NavController1)->ViewController1-具有-->ContainerView--包含-->DisplayedViewControllerTab1(这是显示的我的选项卡1视图控制器) VC1的变量数据在DisplayedViewControllerTab1中 当用户点击Tab3(DisplayedViewControllerTab3)时,我试图获取要传递给Tab3 vie
- 选项卡1->包含导航控制器(NavController1)->ViewController1-具有-->ContainerView--包含-->DisplayedViewControllerTab1(这是显示的我的选项卡1视图控制器)
- 当用户点击Tab3(DisplayedViewControllerTab3)时,我试图获取要传递给Tab3 viewController的dataForVC1的值
var data: ModelData?
if let navController = tabBarController.viewControllers?[0] as? NavController1,
let childNavVC = navController.children.first as? ViewController1 {
//Get container view
let conView = childNavVC.containerView. //This is outlet
//Looking for something like this - struck here
if let displayedVC1 = "Container view's VC as? DisplayedViewControllerTab1 {
data = displayedVC1.dataForVC1
}
}
请建议如何实现这一点您不需要忙于处理容器视图。在
ViewController1
中,只需添加对所显示的viewcontrollertab1或其他vc的引用,然后直接访问它们
你的VC代码看起来像这样
class ViewController 1:UIViewController{
//...
var displayedVC1:DisplayedViewControllerTab1?
//...
}
然后你的代码现在:
var数据:ModelData?
如果让navController=tabBarController.ViewController?[0]作为?导航控制器1,
让childNavVC=navController.children.first作为?视图控制器1{
数据=childNavVC.displayedVc1
}
另外,为了方便起见,如果您有自己的TabBarController类,那么您可以在创建控制器时添加所需的所有引用,或者只添加计算属性,因此您不需要一直深入层次结构
在您的TabbarViewController
类中:
var myViewController1:MyViewControllerOne?{
返回(viewControllers[0]作为?NavController)?.children.first作为?MyViewControllerOne
}
变量myViewController2:MyViewControllerTwo?{
返回(viewControllers[1]作为?NavController)?.children.first作为?MyViewControllerTwo
}
我已从容器切换到DisplayedViewControllerTab1。如果我加上这个“var displayedVC1:DisplayedViewControllerTab1”,那么我的displayedVC1将为零,直到我分配了一些值是的,但这没关系吗?在那之前你也不会有导航数据,所以我不认为这是个问题。