performSegueWithIdentifier funktioniert nicht
Mein Haupt-view-controller ist in einem navigation-controller und es entspricht EditViewControllerDelegate
Protokoll. Es ist das delegieren von meinen zwei view-Controllern, die ich brauche zu präsentieren Modal.
@interface EditViewController : UIViewController
@property (nonatomic) id <EditViewControllerDelegate> delegate;
@end
@interface EditSomethingViewController : EditViewController
@end
@interface EditSomethingElseViewController : EditViewController
@end
In einem editViewController:(EditViewController *)evc didFinishEditing:(Something *) something
Methode, bekomme ich als erstes die Daten, die ich brauche, dann bin ich entlassen, der evc
- und call -
[self performSegueWithIdentifier:@"My Segue" sender:self];
"Mein Übergang" definiert ist, die in Xcode und die Kennung ist die gleiche sowohl im code und in Xcode (ich habe versucht es zu ändern nur um zu sehen, wenn es aufgerufen wird, und es wirft eine Ausnahme)
Wenn ich "Meine Reihenfolge"'s Art zu drücken, hat es geklappt.
Aber mit Modaler es nicht tun, nachdem ich mich wieder an die main-view-controller
Was bin ich?
BEARBEITET:
Habe ich zufällig herausgefunden, dass eine Warnung in meinem storyboard! (es ist seltsam, weil es nicht eine Warnung in das Projekt "von überall sichtbar")
Im connections inspector unter "Referenzierung Storyboard leitet über" es ist eine Warnung für meine modal-segue. es sagt :
(null) is not a valid containment controller key path
Habe ich überprüft, andere modale leitet über und es ist die gleiche Warnung, aber ich didn ' T brauchen, um Sie auszulösen, indem Sie code hatte deshalb keine Probleme vor.
BEARBEITET 2:
-(void)editViewController:(EditViewController *) evc
didFinishEditing:(Something *) something
{
self.something = something;
[self dismissModalViewControllerAnimated:YES];
For ( OtherThing * otherThing in self.something.otherthingsArray)
{
NSLog(@"%@", otherThing);
}
[self performSegueWithIdentifier:@"My Segue" sender:self];
}
- Können Sie uns zeigen Ihre ganze editViewController:(EditViewController *)evc didFinishEditing:(Etwas *)etwas Methode?
- Für jetzt tut es nichts anderes, abgesehen von ein NSLog, um zu sehen, "etwas"'s Beschreibung. Ich habe gerade ein NSlog zu prepareForSegue und es wird aufgerufen, aber der übergang erfolgt nicht auf dem Bildschirm.
- Ich dachte, Sie sagten, Sie waren Abweisung der edit view-controller und ruft performSegueWithIdentifier in dieser Methode. Wo machst du diese Dinge? Ich will sehen, wie Sie tun, dass der Teil, um zu sehen, wenn das ist, wo der Fehler ist.
- Ja, sicher! aber ich meinte gar nichts mehr. Ich werde es hinzufügen, um die Frage einfach zu entfernen Mehrdeutigkeit.(EDIT 2)
- wie sollte Sie die Ansicht ausführen: [self performSegueWithIdentifier:@"Meine Segue" sender:self]; wenn er die Entlassung vor sich [selbst dismissModalViewControllerAnimated:YES]; ?
- es ist die Präsentierenden ViewController, der entlässt den modal ein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie warten, bis Ihre anderen view-controller ist getan animieren, bevor die segue. Sie können die neue iOS-5 Methode:
Wenn Sie eine pre-iOS 5 Weg, es zu tun, sollten Sie nur das hinzufügen einer Verzögerung zu geben, die animation der Zeit, bevor die segue.