当然,您不能在不同的ViewController中为控件创建IBAction或IBOutlet! 但是,层次结构中的每个视图控制器都有其子视图控制器的引用。
方法1:
@IBAction func buttonTapped(_ sender: Any) {
let splitViewController = self.childViewControllers[0] as! YourSplitViewController
let targetViewController = splitViewController.childViewControllers[0] as! YourTargetViewController
targetViewController.label.text = "Whatever!"
}
方法2:
这可能是更好的,如果你把在你的 “为赛格瑞准备” 方法,每个孩子控制器参考
ContainerViewController:
var mySplitViewController: YourSplitViewController?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "splitViewSegue" {
self.mySplitViewController = segue.destination as! YourSplitViewController
}
}
YourSplitViewController:
var aViewController: YourFirstViewController?
var bViewController: YourSecondViewController?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "aViewSegue" {
self.aViewController = segue.destination as! YourFirstViewController
} else if segue.identifier == "bViewSegue" {
self.bViewController = segue.destination as! YourSecondViewController
}
}
所以,你可以访问它,就像在你的容器视图控制器:
@IBAction func buttonTapped(_ sender: Any) {
self.mySplitViewController.firstViewController.label.text = "Whatever!"
}
“既然不能在不同的视图控制器创建一个IBAction为IBOutlet中或对控制”为每个分割创建一个视图控制器子类。如果你为苹果公司工作,那么你为什么不问你的同事? –
每个分裂已经有一个ViewController子类,这就是我添加一些函数/动作/属性,但无法从我的顶级视图达到。还有什么我失踪? Re apple:这是一家大公司,我的部门里没有任何开发人员在xcode/swift/cocoa中工作。 –