Предисловие: я не использую файлы *.xib.
Я создаю экземпляр UINavigationController в классе, который эффективно служит моим «rootViewController». Этот «rootViewController» также имеет два члена UITableViewController, которые отображаются в разных частях экрана iPad. Один из них установлен как корневой вид для навигационного контроллера. Назовем его tableViewControllerA.
Проблема в том, что когда я вызываю pushViewController для действительного UINavigationController, я не вижу никакого эффекта: [tableViewControllerA.navigationController pushViewController:tableViewControllerXanimated:YES];
Из сообщений, которые я искал сегодня, я понял, что этот метод push должен, в свою очередь, заставлять экран перерисовывать верхнюю часть стека controller.view. Это не то, что я вижу.
Казалось, что в моей реализации произошел разрыв, и пришло время сослаться на рабочий пример в моей среде (xcode 4.0). Предполагая, что готовые шаблоны обеспечат рабочую основу, я создал новые навигационные приложения. Я просто изменил didFinishLaunchingWithOptions: следующим образом.
UIViewController *view1 = [[UIViewController alloc] init];
UIViewController *view2 = [[UIViewController alloc] init];
view1.title = @"view1";
view2.title = @"view2";
[self.navigationController pushViewController:view1 animated:YES];
[self.navigationController pushViewController:view2 animated:YES];
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:view1];
[view1 release];
[view2 release];
Я нашел похожие результаты. Когда я запускаю симулятор, заголовок экрана читает заголовок того, на что указывает self.window.rootViewController. С исходным кодом заголовок результирующего верхнего экрана читается как «view1». Когда я initWithRootViewController:view2, на верхнем экране отображается «view2».
Так что, пожалуйста, скажи мне, что я глупый, потому что xyz... Спасибо.