2016-10-26 3 views
0

Ich bin neu in der Storyboard Programmierung. Ich habe ein Storyboard entworfen (sagen wir SB1), es hat zwei Funktionen in seinem Viewcontroller. Ich habe ein anderes Storyboard (SB2) und es hat zwei Tasten. Von beiden Tasten möchte ich SB1 zeigen, aber wenn ich Taste1 drücke, sollte func1 ausgeführt werden und wenn ich Taste2 drücke, sollte fun2 ausgeführt werden. Irgendwelche Vorschläge.Storyboard View Controller mit unterschiedlicher Funktion

Mein Code unten.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let viewController = segue.destinationViewController as? StotyBoard1ViewController 
     where segue.identifier == "LocatorSegue" { 
      viewController.func1() 
    } 
    //how to invoke SB1 Func2 from here 
} 


@IBAction func button1Click(sender: AnyObject) { 
    self.performSegueWithIdentifier("SB1Segue", sender: self) 
} 

@IBAction func button2Click(sender: AnyObject) { 
{ 
    self.performSegueWithIdentifier("SB1Segue", sender: self) 
} 

Antwort

1

Sie tun, um zu unterscheiden, ungefähr wie folgt aus: -

@IBOutlet weak var button1: UIButton! 
    @IBOutlet weak var button2: UIButton! 
    var sender: UIButton? 

    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let viewController = segue.destinationViewController as? StotyBoard1ViewController { 
     if segue.identifier == "SB1Segue" { 
      if self.sender == button1 { 
       viewController.func1() 
      } else if self.sender == button2 { 
       viewController.func2() 
      } 
     } 
    } 

    @IBAction func button1Click(sender: AnyObject) { 
     self.sender = sender as! UIButton 
     self.performSegueWithIdentifier("SB1Segue", sender: self) 
    } 

    @IBAction func button2Click(sender: AnyObject) { 
    { 
     self.sender = sender as! UIButton 
     self.performSegueWithIdentifier("SB1Segue", sender: self) 
    } 
1

Machen Sie eine BOOL Art von globalen Variablen wir isCallFunc1 in Ihrer SB1 Klasse sagen lassen, jetzt in Ihrem prepareForSegue den Wert dieses als wahr oder falsch BOOL Variablen zuweisen für verschiedene Button-Aktion wie diese

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let viewController = segue.destinationViewController as? StotyBoard1ViewController 
     if segue.identifier == "SB1Segue" { 
      viewController.isCallFunc1 = true 
    } else { 
      viewController.isCallFunc1 = false 
    } 
} 
Jetzt

in viewWillAppear von SB1 gemäß der BOOL Variable müssen Sie wie entsprechende Funktion aufrufen

if isCallFunc1 { 
    function1() 
} else { 
    function2() 
} 

Auch die Kennung button2Click ändern kann zwischen den Kennungen

@IBAction func button1Click(sender: AnyObject) { 
    self.performSegueWithIdentifier("SB1Segue", sender: self) 
} 

@IBAction func button2Click(sender: AnyObject) { 
{ 
    self.performSegueWithIdentifier("SB1SegueOther", sender: self) 
} 
Verwandte Themen