Я не знаю, как реализовать подробное представление контроллера табличного представления, когда этот контроллер табличного представления появляется в результате взаимодействия пользователя с контроллером панели вкладок, который не является основным представлением для приложения. Думаю, мне нужно создать второй UINavigationController
, но я не знаю, как интегрировать его в главный и подробный контроллеры представления, которые будут его использовать, хотя у меня есть навигационный контроллер, который работает с моим основным контроллером представления (EdgewoodSecretsMasterViewController)
(я читал PushViewController с tabBarController не работает)
Я пока не использую раскадровки.
Корневое представление моего приложения — это контроллер табличного представления с именем EdgewoodSecretsMasterViewController
. Пользователь может выбрать строку в таблице, которую он заполняет, отобразить подробное представление и вернуться к табличному представлению EdgewoodSecretsMasterViewController
.
У меня также есть панель вкладок в нижней части этого основного вида. Он имеет 3 варианта. Один из них — EdgewoodSecretsMasterViewController
. Он появляется, когда пользователь запускает приложение. Пользователь может выбрать строку в таблице, просмотреть информацию об этом выборе в подробном представлении и вернуться к табличному представлению.
В делегате приложения я создаю vcMaster, класс EdgewoodSecrets.
EdgewoodSecretsMasterViewController *masterViewController = [[EdgewoodSecretsMasterViewController alloc] initWithNibName:@"EdgewoodSecretsMasterViewController" bundle:nil];
UINavigationController * vcMaster = [[UINavigationController alloc] initWithRootViewController:masterViewController];
Второй выбор панели вкладок — это информационный просмотр страницы информации об авторе. Пользователь может выбрать его и вернуться к исходному виду таблицы, но щелкнув первый выбор на панели вкладок.
WhoIsAuthor* vcAu = [[WhoIsAuthor alloc] init];
Эти два варианта работают так, как я хочу. Но не третья вкладка. Третья вкладка vcImportant
ImportantMasterViewController* vcImportant = [[ImportantMasterViewController alloc] init];
initWithNibName:@"ImportantMasterViewController"
bundle:nil ];
Здесь я помещаю все варианты вкладок в контроллер панели вкладок.
UITabBarController *tabBar = [[UITabBarController alloc] init];
NSArray* controllers = [NSArray arrayWithObjects:vcMaster, vcAu,vcImportant,
nil];
tabBar.viewControllers = controllers;
[[self window] setRootViewController:tabBar];
Выбор третьей вкладки вызывает другое табличное представление — ImportantMasterViewController. Это табличное представление заполняется несколькими вариантами выбора, но когда пользователь делает выбор, директива pushViewController ничего не знает об исходном контроллере панели навигации. В точке нажатия self.navigationController не имеет значения. Я думаю, это потому, что контроллер панели вкладок является корневым контроллером представления. Так что я думаю, что это высший уровень/ответственность, я не знаю, как это сказать.
В PushViewController с tabBarController не работает
Я вижу, что Алок Сингх ответил: «Для каждой вкладки нужно создать отдельный навигационный контроллер».
Я могу создать второй объект UINavigationController
в моем appDelegate. Но я не знаю, как его использовать, кроме как настроить его в делегате приложения, как это
UINavigationController * ncImportant = [[UINavigationController alloc]
initWithRootViewController:importantMasterViewController];
Похоже, что где-то должен быть один стек, в котором хранится последний объект, который был помещен в буфер обмена. Кажется, я должен поместить все свои контроллеры представления в этот стек.
В EdgewoodSecretsMasterViewController я выдвигаю подробное представление следующим образом.
[self.navigationController pushViewController:self.detailViewController animated:YES];
Появляется подробный вид. Пользователь может перемещаться вперед и назад.
В WhoIsAuthor я не вывожу подробный подчиненный вид
В ImportantMasterViewController я пытаюсь представить подробное представление следующим образом.
[self.navigationController pushViewController:self.importantDetailViewcontrollers animated:YES];
Детальный вид не открывается. Я знаю, что казнь доходит до этого момента. Я также вижу, что
self.navigationController не имеет значения, как в EdgewoodSecretsMasterViewController
на данный момент.
И это - если я правильно понимаю другую публикацию - потому что ему нужен собственный навигационный контроллер. Но я не знаю, как связать созданный мной навигационный контроллер (ncImportant) в делегате приложения с этим push-уведомлением.
Я не знаю, как обдумать это, или что пойти и прочитать, чтобы понять это.
Спасибо, Лорел.