Проблемы с добавлением UIViewController в UINavigationController - PullRequest
0 голосов
/ 10 июня 2011

Мой RootViewController является UITableViewController.UINavigationController добавляется программно:

_navigationController = [[[UINavigationController alloc] initWithRootViewController:_rootViewController] autorelease];
[self.window addSubview:_navigationController.view];
[self.window makeKeyAndVisible];

В RootViewController.m должен быть загружен DetailViewController при выборе строки:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  NSLog(@"Switch to detail");
  CCouchDBDocument *selectedObject = [self.contentsList objectAtIndex:indexPath.row];
  DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
  [self.view addSubview:detailViewController.view];
  [detailViewController setDetailItem: selectedObject]; 
  [self.navigationController pushViewController:detailViewController animated:YES];
  [detailViewController release];
}

Без addSubView на экране ничего не происходит.Все примеры, которые я видел прежде, используют только pushViewController.И загрузка DetailView занимает около 4 секунд.Это слишком долго (в настоящее время он пуст, только одна метка).Когда я пытаюсь установить navigationTitle (self.title = @ "Hello";), заголовок остается тем же из RootViewController, поэтому что-то должно быть не так с navigationController.

Я пытался поместить все вAppDelegate и используйте метод switchView .Проблема заключается в вызове setDetailItem, который я не могу вызвать, если работаю с методом switch.

Каков будет правильный способ загрузки DetailView из RootViewController в стек навигации и, возможно, больше изDetailViewController позже?

Обновление Я снова начал с самого начала с приложения на основе Windows.Добавил UITableViewController как «RootViewController» и инициализировал его с помощью UINavigationController в AppDelegate (абсолютно ничего не делал в XIB).Когда я пытаюсь установить self.navigationController.title = @ "Test";во ViewDidLoad ничего не происходит.

Что там не так?

1 Ответ

1 голос
/ 10 июня 2011

Вы не устанавливаете заголовок DetailView, когда он отображается с помощью UINavigationController с помощью self.title, вам нужно установить свойство заголовка UINavigationItem в инициализаторе DetailView.

например. в инициализаторе DetailView: -

self.navigationItem.title = @"Hello";

Вы правы, вам не нужно добавлять представление detailViewController как подпредставление текущего представления - вам просто нужен вызов pushViewController. Я не уверен, почему это не появляется все же.

Очевидные вопросы: все ли в норме подключено нормально, и что делает инициализатор DetailView?

...