Xcode 4 iphone 3.1.3 приложения не работают
Я работаю с Xcode 4, и мое программное обеспечение хорошо работает на iPhone 4 и симуляторе, но когда я тестирую его на устройствах, таких как iPhone 2G или 3Gs, у меня сразу же появляется эта ошибка, когда я запускаю код:
Завершение работы приложения из-за необработанного исключения "NSUnknownKeyException", причина: "[ setValue:forUndefinedKey:]: этот класс не соответствует значению ключа, соответствующему кодированию для ключа rootViewController".
В поисках пути решения проблемы я создаю программу Hello World и не работаю на 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 ответ
UIWindow
не имеет rootViewController
свойство в версиях iOS менее 4.0. Следовательно, если вы хотите поддерживать эти версии, вы не можете использовать self.window.rootViewController = myViewController;
Вы обычно должны добавить представление контроллера в окно, то есть: [self.window addSubview:myViewController.view];
Редактировать: проблема в том, как вы проверяете, какая это версия, так как 3.1.3 все еще мог бы ответить на setRootViewController (встроенная, но не публичная переменная).