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 (встроенная, но не публичная переменная).

Другие вопросы по тегам