Ich habe eine programmgesteuerte rightBarButtonItem
, die ich einen modalen Übergang zu einem Navigation Controller auslösen möchte. Der Nav Controller ist der "root view controller" für meine Edit View Controller Szene.Übergeben eines Objekts durch einen Stammansicht Controller
Hier ist ein example of what I'm talking about, außer hier ist die Schaltfläche im Storyboard erstellt und so können Sie den Übergang von der Schaltfläche im Storyboard steuern. Das ist die Struktur I über
redeHomeVC --(modal)--> Navigation Controller --(root view)--> EditVC
ich kein rightBarButtonItem
in meinem Storyboard einfügen können, so habe ich eine programmatisch erstellen und made the segue to the Navigation Controller following this answer.
Mein Zweck hier ist, einen modalen Bildschirm zu präsentieren, um ein Objekt zu bearbeiten, also muss ich dieses Objekt von meinem HomeVC in mein EditVC durch den Navigationssteuerpult übergeben. Das Beispiel in der ersten Verknüpfung war, ein Objekt zu erstellen, also wurde nichts benötigt, um übergeben zu werden.
Hier ist, wo ich jetzt bin. Meine HomeVC (vereinfacht Namen so ist es einfacher zu verstehen) eine navbar mit einem programmatisch erstellt rightBarButtonItem
deren Wähler eine Funktion aufruft:
func editButtonPressed() {
// doesn't call prepareForSegue unless I prepend super.
super.performSegueWithIdentifier("ShowEdit", sender: self)
}
Mein Problem liegt in meinem prepareForSegue Funktion:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
print("this one prints")
if segue.identifier == "ShowEdit" {
print("this one prints")
// prints out the UINavigationController, not the EditVC
print("segue: \(segue.destinationViewController)")
if let editViewController = segue.destinationViewController as? EditViewController {
// THIS IS WHAT I WANT TO ACCOMPLISH
editViewController.selectedObject = selectedObject
print("DOES NOT PRINT")
} else {
print("this one prints")
}
}
Also, wenn Sie Ich kann sehen, worauf ich hinaus will, ich möchte das Objekt von HomeVC an EditVC übergeben, aber mein Segment geht momentan zum Navigation-Root-View-Controller. Wie kann ich es über den Navigationscontroller an die EditVC übergeben?
Ich dachte über die Erstellung eines Controllers für den Nav Controller, so wäre es myNavVC.selectedObject == selectedObject
, und dann in myNavVC PrepareForSegue übergeben Sie es mit EditVC.selectedObject == selectedObject
, aber was würde ich für den Bezeichner seit seiner Root-Ansicht verwenden?
sind Sie sicher, dass die destVC editVC ist? – pacification
Also ist der destVC jetzt der Navigation Controller, der die root-Ansicht zu editVC ist, weshalb er nicht ins Innere geht, wenn editViewController ... '. Sehen Sie meinen letzten Absatz für das, was ich tun möchte, aber ich kann nicht herausfinden, wie. –