UINavigationController с UITabViewController
Я создаю приложение, делегат которого имеет UINavigationController (navigationController). Первый вид - это UITabViewController (tabView), который имеет UINavigationController с UIViewController с UITableView, который показывает некоторые контакты.
То, что я хочу сделать, это нажать новый viewcontroller с информацией о контакте при касании контакта в табличном представлении (поверх toppest navController)
Я делаю следующее в appDelegate:
[self.window makeKeyAndVisible];
[self.window addSubview:[navigationController view]];
TabsView *tabsView = [[TabsView alloc] initWithNibName:nil bundle:nil];
[navigationController.view addSubview:[tabsView view]];
Первая вкладка tabsView загружает ContactsView.m, который имеет UINavigationController со всеми контактами, и когда кто-то нажимает на одну строку, он должен выдвинуть новое представление следующим образом:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[table deselectRowAtIndexPath:indexPath animated:YES];
ContactSecondView * varContactSecondView = [[ContactSecondView alloc] initWithNibName:nil bundle:nil];
varContactSecondView.title = [[contactsArray objectAtIndex:indexPath.row] name];
[self.navigationController pushViewController:varContactSecondView animated:YES];
[varContactMapView release];
}
Но ничего не происходит при касании подряд.
Поэтому у меня есть разные файлы: делегировать с UINavigationController <- UITabViewController <- UIViewController с UINavigationController с UITableView; и я хочу вставить ViewController в первый навигационный контроллер.
Как предполагается получить доступ к делегату навигационного контроллера? Я делаю это правильно?
Редактировать: если это дает какую-либо подсказку, когда я делаю self.navigationController.title = @"Contacts";
в ContactsView.m это не меняет заголовок верхней панели.
Спасибо!
2 ответа
Две вещи.
Не рекомендуется вставлять
UITabBarController
в контроллере навигации. Это нормально, чтобы встроить UINavigationController вUITabBarController
, Я знаю, что было бы "хорошо иметь", чтобы вставить вашUITabBarController
вUINavigationController
, но вы можете пересмотреть свой дизайн, чтобы следовать философии дизайна iOS.Вместо добавления подпредставления к окну в вашем appDelegate, попробуйте добавить, какой контроллер вы используете в свойстве окна rootViewController, т.е.
self.window.rootViewController = navigationController;
Возможно, я ошибаюсь, но я думаю, что вы не используете правильный способ настройки контроллера представления в контроллере навигации.
Ты сделаешь:
[navigationController.view addSubview:[tabsView view]];
Я хотел бы использовать:
[navigationController setViewControllers:[NSArray arrayWithObject:tabsView] animated:NO];