Это, вероятно, легко отсортировано, но я не могу понять это. У меня есть приложение панели вкладок с двумя вкладками, каждая вкладка имеет UINavigationController
.iOS - отображение контроллера просмотра уже в стеке навигации
Предположим, что я в закладке 1 нажимаю viewcontroller с именем ItemViewController
, затем перехожу на вкладку 2. На вкладке 2 я хочу программно отобразить ItemViewController
. Поэтому сначала нужно взять меня на вкладку 1, а затем отобразить ItemViewController
.
Это легко достижимо, просто коснувшись вкладки 1 вкладки, но я хочу сделать это программно по другим причинам.
Что я делаю прямо сейчас, чтобы достичь этого:
[tab1NavController popToRootViewControllerAnimated:NO];
[tabBarController setSelectedIndex:0];
[tab1NavController pushViewController:itemViewController animated:NO];
Я хотел бы быть в состоянии сделать что-то подобное в псевдокоде:
if(viewControllerIWantToDisplayIsOnNavStack)
[tab1NavController presentViewController:viewControllerIWantToDisplay];
else
//instantiate and pushviewcontroller onto stack
Как я могу добиться этого ?
стека С, где я получаю ссылку на 'viewControllerIWantToDisplay'? –
Вам нужно сохранить ссылку на него где-нибудь, я предлагаю класс appDelegate, он легко доступен во всем приложении. Или, если вы уверены, что на 'tab1NavController' будет только один' viewControllerIWantToDisplay', лучший подход может состоять в том, чтобы проверить тип класса, как предлагает BobDev. Но в этом случае вам нужно будет проверить весь массив 'viewControllers', чтобы найти ваш контроллер. – lawicko