Rufen Sie den View-Controller auf, der den sichtbaren View-Controller gedrückt hat

8

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:

%Vor%

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:

%Vor%

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.

    
mvexel 06.07.2010, 12:28
quelle

1 Antwort

6

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:

%Vor%     
Douwe Maan 06.07.2010, 13:13
quelle