Ich habe eine App, die eine UINavigationController
hat, die eine UITabBarController
in den Blick schiebt. Diese UITabBarController
hat vier Registerkarten, von denen eine eine benutzerdefinierte UIViewController
, eine Instanz von EventInformationViewController
anzeigt. Eine Schaltfläche in diesem benutzerdefinierten Ansichts-Controller schiebt wiederum einen anderen benutzerdefinierten Ansichtscontroller EventRatingAddViewController
in die Ansicht. Eine Aktion in diesem Ansichtscontroller sollte eine Methode in der EventInformationViewController
-Instanz aufrufen. Der folgende Code bringt die App zum Absturz:
Ich dachte, dass die viewControllers-Eigenschaft ein Array aller VCs auf dem Navigations-Stack beibehalte, so dass der Index der aktuell sichtbaren eins minus eins auf die VC verweisen sollte, die die derzeit sichtbare VC in die Ansicht schob. Vielmehr scheint es auf mein UITabBarController
zu zeigen:
Was ist los damit und, was noch wichtiger ist, wie bekomme ich einen Zeiger auf die VC, schob die derzeit sichtbar VC in den Blick?
BEARBEITEN: Ich habe am Ende ein Delegate-Protokoll für das EventRatingAddViewController
erstellt und das EventInformationViewController
als Delegat zugewiesen. Das funktioniert gut - immer noch denke ich, dass es eine Möglichkeit geben sollte, über den Navigationsstapel auf den schiebenden VC zuzugreifen.
Ich bin mir ziemlich sicher, dass das UITabBarController
tatsächlich den aktuellen View-Controller gedrückt hat, aber das, wonach Sie suchen, ist der View-Controller eines dieser UITabBarController
-Registerkarten, des View-Controllers, der in sichtbar war UITabBarController
zu der Zeit, als dieser UITabBarController
den View-Controller auf dem Navigations-Stack verschoben hat. Möglicherweise hat dieser UITabBarController
den View-Controller auf den Stack geschoben, weil er vom View-Controller des sichtbaren Tabs dazu aufgefordert wurde, also etwa so: [self.tabBarController.navigationController pushViewController:someViewController];
.
Um herauszufinden, welcher Ansicht-Controller in UITabBarController
zu dem Zeitpunkt angezeigt wurde, als der View-Controller auf den Stack geschoben wurde, verwenden Sie die .selectedViewController
-Eigenschaft. Dies würde etwa so aussehen:
Tags und Links iphone uinavigationcontroller