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 ответа

Решение

Две вещи.

  1. Не рекомендуется вставлять UITabBarController в контроллере навигации. Это нормально, чтобы встроить UINavigationController в UITabBarController, Я знаю, что было бы "хорошо иметь", чтобы вставить ваш UITabBarController в UINavigationController, но вы можете пересмотреть свой дизайн, чтобы следовать философии дизайна iOS.

  2. Вместо добавления подпредставления к окну в вашем appDelegate, попробуйте добавить, какой контроллер вы используете в свойстве окна rootViewController, т.е.

    self.window.rootViewController = navigationController;

Возможно, я ошибаюсь, но я думаю, что вы не используете правильный способ настройки контроллера представления в контроллере навигации.

Ты сделаешь:

[navigationController.view addSubview:[tabsView view]];

Я хотел бы использовать:

[navigationController setViewControllers:[NSArray arrayWithObject:tabsView] animated:NO];
Другие вопросы по тегам