Holen Sie sich die Ansicht-controller, schob die sichtbare view-controller

Habe ich eine app mit UINavigationController drückt, dass eine UITabBarController in Sicht. Diese UITabBarController verfügt über vier Registerkarten, eine davon zeigt eine benutzerdefinierte UIViewController eine Instanz von EventInformationViewController. Eine Schaltfläche in diesem custom-view-controller wiederum drückt eine andere custom-view-controller EventRatingAddViewController in Sicht. Eine Aktion, die in diesem view-controller sollte eine Methode aufzurufen, die in der EventInformationViewController Instanz. Der folgende code lässt die app Abstürzen statt:

//get the index of the visible VC on the stack
int myIindex = [self.navigationController.viewControllers indexOfObject:self.navigationController.visibleViewController];
//get a reference to the previous VC
EventInformationViewController *prevVC = (EventInformationViewController *)[self.navigationController.viewControllers objectAtIndex:myIindex - 1];
[prevVC performSelector:@selector(rateCurrentEvent:)];

Dachte ich, dass die viewControllers-Eigenschaft ein array mit allen VCs auf die navigation stack, so dass der index des aktuell sichtbaren eins minus eins sollte auf den VC schob die aktuell sichtbaren VC in Sicht. Es scheint vielmehr zeigen Sie auf meine UITabBarController:

-[UITabBarController rateCurrentEvent:]: unrecognized selector sent to instance

Was ist mit, dass und noch wichtiger, wie bekomme ich einen Zeiger auf die VC schob die derzeit visisble VC in Sicht?

EDIT: ich landete ein delegate-Protokoll für die EventRatingAddViewController und die Zuordnung der EventInformationViewController als Delegierter. Dies funktioniert gut - trotzdem denke ich sollte es eine Möglichkeit zum Zugriff auf das drängen VC durch die navigation stack.

  • Nicht eine Antwort auf Ihre Frage, aber Sie sollten .topViewController statt .visibleViewController als letzteres könnte auch ein Modal vorgestellt view-controller, das hat nichts zu tun mit dem Navigations-controller-stack!
  • Haben Sie versucht, die Protokollierung myIindex und der index des UITabBarController, die Sie bekommen?
  • Guter Ausgangspunkt um die topViewController. Nicht machen einen Unterschied in diesem Fall, da ich keine modale VCs in meiner app. Die sichtbare VC bekommt den index 2, der UITabBarController 1.
  • Warum sind Sie im Konfigurationsbereich einen tab bar controller mit nur 1 tab? Warum nicht einfach präsentieren a-view-controller, indem Sie ihn auf den Stapel oder Modal
  • die UITabBarController hat vier Registerkarten, es ist nur dieser eine unter Berücksichtigung, dass eine VC-drückt, dass eine neue VC auf dem Stapel.
  • bearbeitet die Frage, um klar zu machen, dass die UITabBarController hat mehr tabs als die unter Berücksichtigung.

InformationsquelleAutor mvexel | 2010-07-06
Schreibe einen Kommentar