Установка rootViewController для ipad 3.2 не работает

Я сделал простое навигационное приложение. он очень хорошо работает на 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?


person fulberto100    schedule 11.04.2011    source источник


Ответы (2)


UIWindow не имел свойства rootViewController в iOS ‹ 4.0. Поэтому вам нужно будет проверить версию (погуглить), а затем либо установить rootViewController, либо добавить view навигационного контроллера в качестве подпредставления в окно, как показано ниже, в зависимости от того, какую версию использует ваш пользователь.:

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

быстрое редактирование: чтобы проверить, можете ли вы использовать свойство rootViewController, вы можете проверить, возвращает ли [self.window respondsToSelector:@selector(setRootViewController)] ИСТИНА или ЛОЖЬ.

person Jesse Naugher    schedule 11.04.2011
comment
отлично, это работает для всех версий iOS. я думаю, что мне не нужно проверять версию. потому что я не устанавливаю контроллер представления в IB. Благодарность... - person fulberto100; 12.04.2011

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

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