Почему изменение приведенного ниже кода со старой записи на новую устраняет следующую проблему.
Код:
// OLD Entry - Did not work
//[self.window addSubview:navigationController.view];
// NEW Entry - Fixed it
self.window.rootViewController = self.navigationController;
Проблема при использовании старого кода:
Я использую UINavigationController и имею UITableViewController "mainView", а затем представление 2-го уровня, которое я помещаю в стек, назовем его UITableViewController "detailView" .
Обычная навигация назад и вперед от основного к деталям работает нормально
НО при автоматическом запуске при запуске во втором представлении (при сохранении состояния) я перехожу ко второму представлению ОК, однако КНОПКИ ПАНЕЛИ ИНСТРУМЕНТОВ НЕ появляются на внизу 2-го вида в этом случае. Когда я возвращаюсь на главную страницу (через стандартные механизмы UINavigationController), а затем выбираю строку в UITableView и снова возвращаюсь в то же представление, элементы панели инструментов отображаются нормально.
Не удалось отследить это, но, наконец, через Метод проб и ошибок. Я заметил, что это изменение в коде (см. выше) в appDelegate (из всех мест), похоже, решает проблему.
Есть идеи?
РЕДАКТИРОВАТЬ: Для полноты изложения вот полный метод
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
RootViewController *rootViewController = (RootViewController *)[navigationController topViewController];
NSManagedObjectContext *context = [self managedObjectContext];
if (!context) {
abort(); // TODO: Do better job here than abort
}
rootViewController.managedObjectContext = context;
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
}
РЕДАКТИРОВАТЬ 2: О, у меня есть файл NIB и настройки корневого контроллера / окна представления в построителе интерфейса - так что мне интересно, могу ли я m смешивание здесь NIB и программного подхода, что может вызвать проблемы?
РЕДАКТИРОВАТЬ 3: Также отмечалось, что следующий код didFinishLaunchingWithOptions работал, когда я добавил строку «self.window.rootViewController = self.navigationController». То есть без этой строки (это то, что делает пример coredatabooks), у меня возникает проблема.
RootViewController *rootViewController = (RootViewController *)[navigationController topViewController];
rootViewController.managedObjectContext = self.managedObjectContext;
self.window.rootViewController = self.navigationController; // WORKS WHEN I ADD THIS LINE IN FOR SOME REASON???
// Configure and show the window
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
return YES;