Xcode 4 iphone 3.1.3 приложения не работают - PullRequest
0 голосов
/ 21 сентября 2011

Я работаю с Xcode 4, и мое программное обеспечение хорошо работает на iPhone 4 и симуляторе, но когда я тестирую его на устройствах, таких как iPhone 2G или 3Gs, у меня сразу же появляется эта ошибка, когда я запускаю код:

Завершениеприложение из-за необработанного исключения 'NSUnknownKeyException', причина: '[setValue: forUndefinedKey:]: этот класс не соответствует значению ключа для кодирования ключа rootViewController.'

в поисках пути решения проблемы, которую я собралПривет, мир программы и не работают на iPhone 3gs ... в поисках решений я нашел это:

// self.window.rootViewController = self.viewController;[self.window addSubview: [представление self.viewController]];

используйте addubview следующим образом, и программа должна работать нормально ...

Хорошо, привет, мир работает хорошо, но моя программа не работаетработать на всех ...

может быть, это код, который я должен изменить ... (но я на самом деле не ..)

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
// Override point for customization after application launch.

//this and application should run on 3.1.3
if ([self.window respondsToSelector:@selector(setRootViewController:)])
    self.window.rootViewController = self.viewController;
else
    [self.window addSubview:self.viewController.view];

// Add registration for remote notifications
[[UIApplication sharedApplication] 
 registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

// Clear application badge when app launches
//application.applicationIconBadgeNumber = 0;

[self.window makeKeyAndVisible];

return YES;

}

Я ищу информацию об этой проблемено каждый раз, когда я ищу, я обнаруживаю только изменение строки self.window.rootViewController = self.viewController;

но, к сожалению, это мало помогает.

спасибо, ребята, за ваше терпение:)

РЕДАКТИРОВАТЬ:

я меняю код

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

на

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

но ошибка все та же ...

1 Ответ

1 голос
/ 21 сентября 2011

UIWindow не имеет свойства rootViewController в версиях iOS ниже 4.0. Следовательно, если вы хотите поддерживать эти версии, вы не можете использовать self.window.rootViewController = myViewController;, вам обычно нужно добавить вид контроллера в окно, т.е. [self.window addSubview:myViewController.view];

Редактировать: проблема в том, как вы проверяете, какая это версия, поскольку 3.1.3 все равно мог бы ответить на setRootViewController (встроенная, но не публичная переменная).

...