2017-11-23 4 views
0

Ich bin neu zu swift, und ich möchte ein Array aus meiner Containeransicht zur übergeordneten Ansicht übergeben. Ich habe die Containeransicht mit Storyboard erstellt, aber die Containeransicht wird angezeigt und verschwindet programmatisch als unten dargestellt:Werte von der Containeransicht zum übergeordneten Ansichtscontroller übergeben

//in parent view controller, inside viewDidLoad() 
CameraView.isHidden = true 

//in child view controller, on click of button, 
let parent = self.parent as! DiaryEntryViewController 
parent.CameraView.isHidden = true 

ich die Daten ausgewählt wollen gezeigt werden, wenn ich auf die Schaltfläche klicken Container Ansicht anzuzeigen. Ich weiß nicht, wie ich Werte vom Child-View-Controller zum Parent-View-Controller übertrage und wo ich auf die Werte zugreifen kann. Diese Werte müssen innerhalb einer Funktion aufgerufen werden, die beim Klicken auf eine andere Schaltfläche im übergeordneten View-Controller aufgerufen wird .

+1

Verwenden Protokolle mit Ihren Eltern-View-Controller zu kommunizieren und zu delegieren markiert darin –

+0

Can Sie schlagen vor, wie es gemacht werden kann, kann mit etwas Code sein. Ich bin neu zu schnell. –

Antwort

0

Schritte, um das zu tun.

  1. Ihre Container Ansicht, die ein embed segue die Kind-View-Controller enthalten, Namen, der so etwas wie dieses segue .... "homeToContainer" (Siehe die beigefügte Bild) Add Embed segue name

  2. diese Methode hinzufügen zu Ihren Eltern-View-Controller (DiaryEntryViewController)

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
         if let vc = segue.destination as? ChildViewController, 
          segue.identifier == "homeToContainer" { 
          vc.delegate = self 
         } 
    } 
    
  3. Protokoll hinzufügen und und seine Variable in ChildViewController

    protocol ChildToParentProtocol:class { 
    
    
         func buttonClickedByUser() 
         func needToPassInfoToParent(with value:Int) 
    
        } 
    
    
        class ChildViewController: UIViewController { 
    
         weak var delegate:ChildToParentProtocol? = nil 
    
         @IBAction func createTourPressed(_ sender: UIButton) { 
          // Call here delegate methods to tell parent about the action 
          delegate?.buttonClickedByUser() 
    
         } 
    
        } 
    
  4. Im letzten in Ihren Eltern Viewcontroller, diese Erweiterung hinzufügen, Erweiterung DiaryEntryViewController: ChildToParentProtocol {

      func buttonClickedByUser() { 
    
          } 
          func needToPassInfoToParent(with value:Int) { 
    
    
          } 
         } 
    
+0

Kann es ohne Verwendung von Übergängen gemacht werden? Kann programmatisch sein? –

+0

Wenn Sie eine Containeransicht im Storyboard hinzugefügt haben, muss sie über ein Segment verbunden sein. –

+0

Es tut mir leid, ich habe es nicht mithilfe von Storyboard hinzugefügt. Ich habe die Containeransicht nirgendwo hinzugefügt. Ich zeige nur die Containeransicht als versteckt oder nicht. –

Verwandte Themen