Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取另一个选项卡';当前选项卡栏中的viewcontroller变量-iOS-Swift_Ios_Swift_Uiviewcontroller_Uitabbarcontroller_Uicontainerview - Fatal编程技术网

获取另一个选项卡';当前选项卡栏中的viewcontroller变量-iOS-Swift

获取另一个选项卡';当前选项卡栏中的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

我有一个层次结构如下的tabBarController

塔巴控制器

  • 选项卡1->包含导航控制器(NavController1)->ViewController1-具有-->ContainerView--包含-->DisplayedViewControllerTab1(这是显示的我的选项卡1视图控制器)
VC1的变量数据在DisplayedViewControllerTab1中

  • 当用户点击Tab3(DisplayedViewControllerTab3)时,我试图获取要传递给Tab3 viewController的dataForVC1的值
到目前为止我已经试过了

在TabBarController中-didSelect方法

    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将为零,直到我分配了一些值是的,但这没关系吗?在那之前你也不会有导航数据,所以我不认为这是个问题。