从第2个视图(swift)的第1个视图中的初始函数

时间:2016-07-15 04:21:27

标签: ios swift segue

我在第二个viewController上有一个按钮,在按下该按钮后,我想解除第二个viewController并返回第一个视图控制器并立即调用功能在1st ViewController swift文件中编码。

我可以知道我该怎么办?通过segue?

2 个答案:

答案 0 :(得分:2)

有很多种方法可以使用#<Person:0x007fa40c04cd08> #<Person:0x007fa40c04c920> #<Person:0x007fa40c04c5d8> #<Person:0x007fa40c04c5b0> protocol

您可以在delegate中创建一个protocol并扩展该协议。现在,在ViewController1中创建delegate协议,并在ViewController2 ViewController1's方法中传递该代理的引用。

首先创建一个这样的协议

prepareForSegue

现在在此protocol PassdataDelegate { func passData() } 中扩展此协议,并在ViewController1方法

中传递委托的引用
prepareForSegue

现在在class ViewController1 : UIViewController, PassdataDelegate { func passData() { //Here call your function self.callMyFunction() } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if (segue.identifier == "SegueIdentifier") { let destVC = segue.destinationViewController as! ViewController2 destVC.delegate = self } } } 中创建protocol的委托对象,就像这样

ViewController2

注意: - 我在这里传递class ViewController2 : UIViewController { var delegate: PassdataDelegate? //Now call the method of this delegate in Button action @IBAction func buttonClick(sender: UIButton) { self.delegate.passData() //Now dismiss the controller } } ,但您可以传递您在string方法中声明的任何类型的对象。

答案 1 :(得分:1)

您可以参考unwind segue

class ViewController1 {
  @IBAction func doSomeStuffAfterReload(segue: UIStoryboardSegue) {
    // do whatever you need to do here.
  }
}

在情节提要板上,从ViewController2按Ctrl +从button拖动到exit outlet并选择doSomeStuffAfterReload

您可以在此处看到它:https://spin.atomicobject.com/2014/10/25/ios-unwind-segues/ 快乐的编码^^