0

Ich habe eine Elternklasse A mit zwei Containern B und C mit zwei jeweiligen uiviewcontrollers. Ich wechsele die beiden Controller mit einem UISegmentControl. Die Elternklasse hat ein Objekt "Variablen", die ich an die UiViewControllers B und C übergeben möchte.Übergeben von Daten an untergeordneteViewControllers über UISegmentControl

Mein Dout: Wie teile ich ein Objekt von der Elternklasse zu den beiden Kindklassen? Wie erstelle ich eine Referenz meiner Kindklassen in der Elternklasse?

class A: UIViewController { 

@IBOutlet weak var segment: UISegmentedControl! 
@IBOutlet var containerSearch: UIView! 
@IBOutlet var containerAdvancedSearch: UIView! 
var variables: Variables? 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let a = variables?.bankNameLong 
    print("from " + a! + "") 
} 

@IBAction func actionSwitchSegments(sender: AnyObject) { 
    if sender.selectedSegmentIndex == 0 { 
     UIView.animateWithDuration(0.5, animations: { 
      self.containerChangePassword.alpha = 1 
      self.containerAbout.alpha = 0 
     }) 
    } else { 
     UIView.animateWithDuration(0.5, animations: { 
      self.containerChangePassword.alpha = 0 
      self.containerAbout.alpha = 1 
     }) 
    } 

} 



    if segue.identifier == "segSearch"{ 
     let newViewController: vConSearch = segue.destinationViewController as! vConSearch 
     newViewController.Variables = self.Variables 
    }else if segue.identifier == "segAdvancedSearch"{ 
     let newViewController: vConAdvancedSearch = segue.destinationViewController as! vConAdvancedSearch 
     newViewController.Variables = self.Variables 
    } 

Ich versuchte mit segue, aber es funktioniert nur für einen einzigen Kind-Controller. Aber indem ich segue mache, würde es nicht jedes Mal eine neue Instanz erzeugen, wenn ich auf das UiSegmentControl klicke.

+0

Hey @Darth Vader könnten Sie helfen? – Cloy

+0

von wo Sie aufrufen performSegueWithIdentifier ?? – Ujjwal

+0

von der übergeordneten Klasse vConSettings – Cloy

Antwort

1

Sie müssen diesen Code irgendwo schreiben, um die gewünschten Viewcontroller

self.performSegueWithIdentifier("segSearch", sender: sender) 

und dann die Delegaten

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 

    if segue.identifier == "segSearch"{ 
     let newViewController: vConSearch = segue.destinationViewController as! vConSearch 
     newViewController.Variables = self.Variables 
    }else if segue.identifier == "segAdvancedSearch"{ 
     let newViewController: vConAdvancedSearch = segue.destinationViewController as! vConAdvancedSearch 
     newViewController.Variables = self.Variables 
    } 
} 

auch einige Haltepunkte setzen zu debuggen, den Code zu navigieren, wenn sie, um nicht funktionieren zu überprüfen ob die aufgerufene Funktion und die Variablen richtig zugeordnet sind.