【发布时间】:2017-11-13 19:06:26
【问题描述】:
我已经在网上搜索了几个小时,现在认为这将是一件容易的事,但事情并没有按计划进行。这个问题已编辑,一些伟大的家伙给出了很好的答案,但我仍在努力。
这是场景,我有一个始终可见的 viewControllerA。这个视图顶部有一个小按钮,当我点击它时,会出现 viewControllerB 作为静态 tableViewController。老实说,它像其他应用程序一样是从左到右的幻灯片视图。
tableView 中有一个部分和几行,当我点击显示 viewControllerC 的第 4 行时,那里有一个 UISwitch 按钮。当我关闭 viewControllerC 时,viewControllerA 再次出现。 viewControllerB 是我的菜单控制器,因此它不是我更关心的问题。现在我想将数据从 viewControllerC 传递到 viewControllerA。这是我损坏的代码:
对于viewControllerC:
class viewControllerC: UIViewController {
..//
@IBAction func switchTapped(_ sender: UISwitch) {
let vc = viewControllerA()
if sender.isOn == true {
vc.state = true
} else if sender.isOn == false {
vc.state = false
}
}
..//
}
对于 viewControllerA:
class viewControllerA: UIViewController, GMSMapViewDelegate {
var state:Bool?
...//
if self.state == true {
self.mapView.isTrafficEnabled = true
} else {
self.mapView.isTrafficEnabled = false
}
}
但它不起作用,我知道我没有朝着正确的方向前进。从示例中可以看出,我想在 UISwitch 为 on 时发送 ture 并在其 时发送 false >off 从 viewControllerC 到 viewControllerA。有些人建议使用委托方法,但我仍在苦苦挣扎。我正在关注这个 link ,我认为“通过应用程序的共享状态向后传递数据”部分符合我的标准。虽然我需要帮助。提前致谢。
【问题讨论】:
-
与问题无关,但您可以将代码分别减少为一行:
vc.state = sender.isOn和self.mapView.isTrafficEnabled = self.state。问题的原因很可能是viewControllerA()的结果不是Interface Builder中设计的实例。