2017-03-24 4 views
1

Ich hatte eine einzelne ViewController, wo ich eine Tabellenansicht hatte, die Daten aus einer Struktur geladen und alles war gut. Ich habe einen segmentierten Controller hinzugefügt und dann 2 UIViewContainer erstellt.Unerwartete Subview nach dem Hinzufügen von UIViewContainer

Ich habe den gesamten Tableview-Code nach UIViewContainer 1 verschoben und UIViewContainer 2 ist derzeit leer. I bewegte auch die Tableview in dem Storyboard an den neuen UIViewContainer 1

im Code velow UIViewcontainer 1 = tableContainer UIViewController 2 = mapContainer

Ich habe den Code für die segmentierte Ansicht Controller als solche hinzugefügt:

@IBOutlet weak var mapContainer: UIView! 
@IBOutlet weak var tableContainer: UIView! 


@IBAction func showContainer(_ sender: UISegmentedControl) { 
    if sender.selectedSegmentIndex == 0 { 
     UIView.animate(withDuration: 0.5, animations: { 
      self.tableContainer.alpha = 1 
      self.mapContainer.alpha = 0 
     }) 

    }else { 
     UIView.animate(withDuration: 0.5, animations: { 
      self.tableContainer.alpha = 0 
      self.mapContainer.alpha = 1 
     }) 
    } 

} 

Dies ist mehr oder weniger der einzige Code in meinem Haupt View Controller.

Wenn ich laufe, die Kompilierung funktioniert gut, aber Abstürze beim Laden mit dem folgenden Fehler:

*** Terminating app due to uncaught exception 
'NSInternalInconsistencyException', reason: 'There are unexpected 
subviews in the container view. Perhaps the embed segue has already 
fired once or a subview was added programmatically?' 
*** 

Habe ich etwas verpaßt, den ich den Tableview oder Ansichten im Allgemeinen tun müssen?

+0

Das klingt für mich wie eine Ansicht in der falschen Weise hinzugefügt wurde. Ich könnte etwas vermissen, aber das ist nicht genug Informationen für mich, um diesen Fehler zu lösen. Fügen Sie einen View-Controller programmatisch in einen anderen View-Controller ein? – Sethmr

+0

Ich habe ein Storyboard verwendet, um 2 Containeransichten hinzuzufügen. Ich habe 2 Dateien vom Typ UIViewController erstellt, um mit diesen Containern zu verlinken, habe ich hier Fehler gemacht? Wenn ich einen segmentierten Controller mit Containern verwende, muss ich separate Dateien erstellen, um meinen Code für jede Ansicht zu speichern? –

+0

Ich verstehe Ihr Setup nicht vollständig, aber das Hinzufügen eines UIViewController zu einem anderen UIViewController ist leicht möglich. Sie müssen nur bestimmten Richtlinien folgen. – Sethmr

Antwort

0

Das Protokoll besagt, dass in der Containeransicht unerwartete Untersichten vorhanden sind. Möglicherweise möchten Sie sicherstellen, dass alle Teilansichten in den (eingebetteten) segueD UIViewController und nicht in den Container selbst verschoben werden.

0

Ich habe das jetzt gelöst. Irgendetwas muss schief gelaufen sein, als ich es eingerichtet habe, habe ich alle Container entfernt und die App wieder zurückgestellt, wie es war, wieder gestartet und es funktioniert ok jetzt

0

Das Problem für mich war, dass ich versehentlich segue.perform() in prepare(for:sender:) ausgeführt habe. Sobald ich diese Zeile entfernt habe, ist der Fehler verschwunden.

Verwandte Themen