Swift 2 IBAction和Segue

时间:2016-03-25 12:02:29

标签: ios swift2

如何打印1111111 => 22222 => 333333333下面的代码? 任何人都可以告诉我为什么IBAction不是第一个,但prepareForSegue是?

A.swift

 @IBAction func ButtonTOClassB(sender: AnyObject) {
        print("1111111")
    }



override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showingB" {
       print("22222")
}

B.swift

 override func viewDidLoad() {
        super.viewDidLoad()

        print("333333333")
}

控制台:

22222
1111111
333333333

2 个答案:

答案 0 :(得分:2)

在您的IBAction方法中以编程方式执行segue

@IBAction func showLocation(sender: AnyObject) 
{

[self performSegueWithIdentifier:@"segue_name_here" sender:sender];

   print("1111111")
}

在Storyboard中,您需要定义自定义segue name = segue_name_here

enter image description here

答案 1 :(得分:2)

Interface Builder使用addTarget向按钮添加segue操作。然后在此之后添加您的操作。由于动作的调用顺序与添加的顺序相同,因此首先调用prepareForSegue。如果您希望首先调用您的操作,您应该以编程方式执行segue,因为RDC指示或者不使用segue,而是以编程方式推送视图控制器。

@IBAction func showLocation(sender: AnyObject) {
    let storyboard = UIStoryboard(name: "MyStoryBoard", bundle: nil)
    let bvc = storyboard.instantiateViewControllerWithIdentifier("ViewControllerB") as! B

    self.navigationController?.pushViewController(bvc, animated: true)
}