UINavigationController с UITabViewController - PullRequest
       15

UINavigationController с UITabViewController

1 голос
/ 26 октября 2011

Я создаю приложение, делегат которого имеет UINavigationController (navigationController). Первое представление - это UITabViewController (tabView), который имеет UINavigationController с UIViewController с UITableView, который показывает некоторые контакты.

То, что я хочу сделать, это нажать новый контроллер представления с информацией о контакте при касании контакта в табличном представлении (над самым верхним 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 в первый навигационный контроллер. </p>

Каким образом предполагается получить доступ к навигационному контроллеру делегата? Я правильно делаю?

Редактировать: если это дает какую-то подсказку, когда я делаю self.navigationController.title = @"Contacts"; в ContactsView.m, это не меняет заголовок верхней панели.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 октября 2011

Две вещи.

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

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

    self.window.rootViewController = navigationController;

0 голосов
/ 26 октября 2011

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

Вы делаете:

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

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

[navigationController setViewControllers:[NSArray arrayWithObject:tabsView] animated:NO];
...