Tun Sie dies:
[[self navigationController] dismissModalViewControllerAnimated:YES];
, dass Sie an den VC zurück, die modal die Navigationssteuerung vorgestellt. Je weiter Sie danach zurückkommen, hängt davon ab, wie Sie diese "paar Ansichten" vor den Navigationscontroller geschoben haben.
bearbeiten - Erklärung an die tiefste Wurzel zu bekommen ...
Es ist wie diese „paar Ansichten“ klingt sind auf einem anderen, Navigationscontroller Stack zugrunde liegen. Dies kann ein wenig schwierig sein, da der saubere Weg, um weiter in diesem Stapel zurück zu kommen, darin besteht, den zugrunde liegenden Navigationscontroller zu seiner eigenen Wurzel zu bringen. Aber wie kann es wissen, dass der modale VC darüber getan wird?
Nennen wir den View-Controller, der die modale Präsentation des zweiten Navigationscontrollers VC_a durchgeführt hat. Es ist ein modal präsentiert Navigation Controller, dessen oberste VC ist VC_b. Wie kann VC_a wissen, zu seiner Navigationswurzel zu pop, wenn VC_b sich modally selbst entlässt?
Die gute Antwort (normalerweise) ist, dass VC_b entschieden hat, sich aus einem bestimmten Grund zu entschließen - eine Bedingung in Ihrer App/Ihrem Modell wurde geändert, damit sie sich dazu entschließen kann.
Wir möchten, dass VC_a diese Bedingung ebenfalls erkennt. Wenn VC_b entlassen wird, und VC_a bekommt eine viewWillAppear Nachricht, weil es über ist aufgedeckt werden:
// VC_a.m
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (/* some app condition that's true when VC_b is done */) {
// I must be appearing because VC_b is done, and I'm being uncovered
// That means I'm done, too. So pop...
[self.navigationController popToRootViewControllerAnimated:NO];
} else {
// I must be appearing for the normal reason, because I was just pushed onto the stack
}
}
Welchen navigationController rufen Sie an? Es wird zu der Wurzel des Navigationscontrollers auftauchen, den ich mir vorstelle. –
Machen Sie den ersten View-Controller als rootView-Controller Ihres navigationController –
Schließen Sie den modalen View-Controller und dann auf root. – Till