Trotzdem hat das jetzt nicht viel mit deinem Problem zu tun! Du holst ja den Controller an Index 1 raus, was ja nicht der rootController sein kann, der ist ja explizit an Stelle 1, also Index 0. Also denke ich, sollte alles andere als der rootController rausspringen.
So dachte ich das verstanden zu haben
Daraus lässt sich wohl schliessen, dass sonst irgendetwas nicht funktioniert.
Bist du dir sicher, dass an Stelle 2 ein viewController exisitert?
Ich vermute mal das es so ist wie du sagt und das ich an einer anderen Stelle im Code etwas falsch mache, in meinem rootView steht folgendes bzw. wird eine XIB geladen, wenn der Button für das nächste View (Input) angetippt wird
Code:
inputView *anotherViewController =
[[SearchContactView alloc] initWithNibName:@"inputView" bundle:nil];
[self.navigationController pushViewController:anotherViewController animated:YES];
[anotherViewController release];
in den der inputView.m geh ich mal davon aus, das ich mit folgenden Code den inputNavigationController und den inputViewController erzeuge
Code:
- (InputViewController *)inputViewController
{
NSLog(@"SAV inputViewController");
if (inputViewController == nil)
{
inputViewController = [[InputViewController alloc] initWithStyle:UITableViewStylePlain];
}
return inputViewController;
}
- (UINavigationController *)inputNavigationController
{
NSLog(@"SAV inputNavigationController");
if (inputNavigationController == nil)
{
inputNavigationController = [[UINavigationController alloc] initWithRootViewController:self.inputViewController];
}
return inputNavigationController;
}
und innerhalb der inputView.m an der entsprechend Stelle mit folgendem Code das View selber nochmals lade
Code:
[self.navigationController presentModalViewController:self.inputNavigationController animated:YES];
weiterhin befindet sich unteranderem folgender Code innerhalb der inputView.m
Code:
- (void)viewDidLoad {
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Restart" style:UIBarButtonItemStyleBordered target:self action:@selector(startAgain)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"MainMenu" style:UIBarButtonItemStyleBordered target:self action:@selector(backToMainView)];
}
- (void)startAgain{
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
}
- (void) backToMainView{
[self.navigationController popToRootViewControllerAnimated:YES];
}
Überlege dir, wie du den mittels "Back" gewünschten viewController direkt (ohne den Umweg über das Array) erreichen kannst. Zum Beispiel machst du eine neue Klasse (Subklasse von UIViewController), welche einen 'backController' als Instanzvariable (und property) halten kann. So, wie ich dich verstanden habe, willst du eine Reihe von Eingaben auf verschiedenen Screens machen und an irgendeiner Stelle immer die ganze Aktion auf einmal abbrechen können. Dann erstellst du diese ViewController aus der neuen Klasse und weist jedem beim (oder nach) der Initialisation den 'backController' zu. Ich würde es in diesem Fall zumindest so machen. Wenn du Probleme damit hast, ich mache dir gerne ein Beispiel.
Jup genauso wollte ich es haben, quasi ein "Neuanfang"

. Aber ich habe mich eigentlich mit den beiden Methoden angefreundet
Code:
[self.navigationController popViewControllerAnimated:YES];
[self.navigationController popToRootViewControllerAnimated:YES];
die erste Methode nutze ich um zum direkten Vorgänger des aktuellen Views zu gelangen und die entsprechenden Aktionen durchzuführen und die zweite Nutze ich um in das RootView zu springen, da es sich beim inputView um einen direkten "Nachfolger"-View des rootViews handelt

, ist der Weg nicht allzu lang

. Für zukünftige Zwecke wäre die Variante mit der Subklasse (oder die Methode popToViewController mit Index) dennoch hilfreich

, da ich jedoch die Software diese Woche fertig kriegen will und noch ein paar andere "Baustellen" habe, werde ich mir mal Ende dieser Woche anschauen wie das mit der Subklasse gemacht wird.
Ich kann mir zwar vorstellen wie du das mit der Subklasse meinst, wäre aber nett wenn du es an Hand eines kleinen Beispiels zeigen könntest

sofern es sich hierbei nur um ein paar Zeilen Code handelt

bzw. wie gesagt ich würde mich Ende der Woche noch mal ran setzen und mich bei entsprechenden Problemen noch mal melden, bzw. meine Lösung posten für den Fall das jemand diesbezüglich Hilfe benötigt
Danke auf jeden Fall für die Hilfe

gruss denio
