2016-03-25 5 views
1

Как распечатать 1111111 => 22222 => 333333333 нижнего кода? Может ли кто-нибудь сказать мне, почему IBAction не первый, но готовятForSegue?Swift 2 IBAction и Segue

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

В вашем методе IBAction выполнить SEGUE программно

@IBAction func showLocation(sender: AnyObject) 
{ 

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

    print("1111111") 
} 

В раскадровке вам нужно определить пользовательские SEGUE имя = segue_name_here

enter image description here

+0

Так что же нужно делать в prepareForSegue? Является ли 'override func prepareForSegue (segue: UIStoryboardSegue, отправитель: AnyObject?) { if segue.identifier ==" segue_name_here "{ print (" 22222 ") }' –

+0

@kingyau да !! вы просто получили это отлично :), то, если вы нажмете на кнопку, вы получите желаемые результаты – swiftBoy

2

Interface Builder добавляет действие SEGUE к кнопке с addTarget. После этого ваше действие добавляется после этого. Поскольку действия вызываются в том же порядке, в каком они были добавлены, сначала сначала вызываются 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) 
} 
Смежные вопросы