如何打印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
答案 0 :(得分:2)
在您的IBAction方法中以编程方式执行segue
@IBAction func showLocation(sender: AnyObject)
{
[self performSegueWithIdentifier:@"segue_name_here" sender:sender];
print("1111111")
}
在Storyboard中,您需要定义自定义segue name = segue_name_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)
}