我该怎么做?
viewControllers!.forEach
{
$0.view
$0.m = self.m // error here
}
我在每个tabbarcontroller中定义了m,但这是行不通的。
我需要以此来完成此操作,因为以此来初始化每个标签。
谢谢。
答案 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
}
}
}