2011-09-20 48 views
0

我正在使用Xcode 4和我的軟件在iPhone 4和模擬器上工作良好,但是當我在iPhone 2G或3Gs等設備上測試它時,我立即發生此錯誤代碼:Xcode 4 iphone 3.1.3應用程序不工作

由於未捕獲的異常'NSUnknownKeyException'而終止應用,原因:'[setValue:forUndefinedKey:]:該類不是密鑰值編碼兼容的密鑰rootViewController。

尋找解決我建立一個Hello World程序並沒有對iPhone 3GS的工作問題的方式......搜索,我發現這個解決方案:

// self.window.rootViewController = self.viewController; [self.window addSubview:[self.viewController view]];

使用addsubview這樣,程序應該運行正常......

好了的Hello World運行良好,但我的程序不會在所有的工作......

也許這是我的代碼應該改變......(但現在我不真的..)

- (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在iOS版本中沒有rootViewController屬性小於4.0。因此,如果你想支持這些版本,你不能使用self.window.rootViewController = myViewController;,你通常必須添加控制器的視圖到窗口,即:[self.window addSubview:myViewController.view];

編輯:問題是你如何檢查它是什麼版本,因爲3.1.3本來可以響應setRootViewController(內置但不是公共變量)。

+0

我用rootViewController評論代碼,我使用'[self.window addSubview:self.viewController.view];'但沒有改變...同樣的錯誤...也許某處有另一個調用該方法.. – ilmetu

+0

我在整個程序中搜索,但沒有其他調用該屬性...仍然錯誤** [ setValue:forUndefinedKey:]:此類不是密鑰值編碼兼容的關鍵rootViewController。 ** – ilmetu

相關問題