初始化后将数据传递给TabBarControllers吗?

时间:2020-02-10 00:48:57

标签: swift

我该怎么做?

viewControllers!.forEach
        {
            $0.view
            $0.m = self.m // error here
        }

我在每个tabbarcontroller中定义了m,但这是行不通的。

我需要以此来完成此操作,因为以此来初始化每个标签。

谢谢。

1 个答案:

答案 0 :(得分:1)

主要问题是$ 0,第一个参数(在这种情况下为viewController)的缩写在闭包中始终不可变。还有其他一些事情要解决...

首先,您需要对UIViewController进行子类化,以允许您创建/访问m属性。在最基本的级别上,它将是:

class MyVC: UIViewController {
  var m: Int = 0   //giving a default value to save a .init in the example
}

您将需要在AppDelegate / SceneDelegate中创建MyVC视图控制器,而不是标准UIViewControllers。

这时,您可以修改原始代码以在每个视图控制器中设置m属性:

if let count = tabBarController.viewControllers?.count {
    for i in 0 ..< count {
        if let vc = tabBarController.viewControllers?[i] as? MyVC {
           vc.view // as per the original, but can't see any point in it
           vc.m = m
        }
    }
}
相关问题