正如 Schemetrical 所说,使用委托是访问 MainViewController 中的方法的一种简单方法。
由于您将其标记为 Swift,我还将给您一个 Swift 中委托的小示例。
首先你创建一个协议:
protocol NameOfDelegate: class { // ":class" isn't mandatory, but it is when you want to set the delegate property to weak
func someFunction() -> String // this function has to be implemented in your MainViewController so it can access the properties and other methods in there
}
在您的 MainViewController 中,您必须添加:
class MainViewController: UIViewController, NameOfDelegate {
// your code
@IBAction func button(sender: UIButton) {
performSegueWithIdentifier("toOtherViewSegue", sender: self)
}
fun someFunction() -> String {
// access the other methods and return it
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "toOtherViewSegue" {
let destination = segue.destinationViewController as! OtherViewController
destination.delegate = self
}
}
}
最后一步,您必须添加委托的属性,以便您可以与它“交谈”。我个人认为这个属性是某种门,位于两个视图控制器之间,因此它们可以相互交谈。
class OtherViewController: UIViewController {
weak var delegate: NameOfDelegate?
@IBAction func button(sender: UIButton) {
if delegate != nil {
let someString = delegate.someFunction()
}
}
}
我假设您使用 segue 来访问您的其他 ViewController,因为您在帖子中提到了它。这样,您就可以与您的 MainViewController 进行“对话”。
编辑:
至于放松。这也可以通过 segue 来完成。
- 添加:
@IBAction func unwindToConfigMenu(sender: UIStoryboardSegue) { }
到您的 MainViewController。
- 在故事板的顶部有 3 个图标
OtherViewController
。单击里面有一个正方形的圆形黄色,以确保选择了 ViewController 而不是里面的一些元素。
- 控制拖动(或鼠标右键拖动)从带有正方形的同一圆形黄色到最右侧的红色方形图标。这样做会弹出一个菜单,您可以在其中选择展开转场。
- 单击您刚刚创建的新 segue。给它一个标识符,如“backToMain”
- 添加类似于以下代码的内容
OtherViewController
看来我不能再发布任何代码了?:o 稍后会添加。