Настройка RootViewController для ipad 3.2 не работает

#iphone #ipad #uinavigationcontroller #rootview

#iPhone #iPad #uinavigationcontroller #rootview

Вопрос:

я создал простое приложение на основе навигации. это работает на iphone очень хорошо, но не работает на симуляторе и устройстве ipad 3.2.

в событии applicationdidfinish;

 MainViewController *viewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
[self.navigationController pushViewController:viewController animated:NO];
self.window.rootViewController = self.navigationController;
[viewController release];
  

в этой строке указано:

 self.window.rootViewController = self.navigationController;
  

[UIWindow setRootViewController:]: нераспознанный селектор отправлен в экземпляр 0x4c22dd0

но это работает на iPad 4.2 и более поздних версиях.

как я могу решить это для ipad 3.2?

Ответ №1:

В UIWindow не было свойства RootViewController в iOS < 4.0. Поэтому вам нужно будет проверить версию (погуглить), а затем либо установить RootViewController, либо добавить NavigationController view в качестве подпросмотра к окну, как показано ниже, в зависимости от того, какую версию использует ваш пользователь.:

 [self.window addSubview:self.navigationController.view];
  

быстрое редактирование: чтобы проверить, можете ли вы использовать свойство RootViewController, вы можете проверить, [self.window respondsToSelector:@selector(setRootViewController)] возвращает TRUE или FALSE.

Комментарии:

1. отлично, это работает для всех версий iOS. я думаю, мне не нужно проверять версию. потому что я не устанавливаю контроллер просмотра в IB. спасибо…

Ответ №2:

Правильный способ (не забудьте «:»!):

 if ( [self.window respondsToSelector:@selector(setRootViewController:)] )
    self.window.rootViewController = self.tabBarController;
else
    [self.window addSubview: self.tabBarController.view];