0

私はXcode 4で作業しており、私のソフトウェアはiPhone 4とシミュレーターでうまく動作しますが、iPhone 2Gや3Gなどのデバイスでテストすると、コードを実行するとすぐにこのエラーが発生します:

キャッチされない例外 'NSUnknownKeyException' が原因でアプリを終了しています。理由: '[ setValue:forUndefinedKey:]: このクラスは、キー rootViewController のキー値コーディングに準拠していません。

問題を解決する方法を探している私はハローワールドプログラムを構築し、iPhone 3gsで動作しません...解決策を検索すると、これが見つかりました:

// self.window.rootViewController = self.viewController; [self.window addSubview: [self.viewController ビュー]];

このように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];

しかし、エラーはまだ同じです...

4

1 に答える 1

1

UIWindowrootViewController4.0 未満の iOS バージョンにはプロパティがありません。したがって、これらのバージョンをサポートしたい場合はself.window.rootViewController = myViewController;、を使用できません。通常、コントローラーのビューをウィンドウに追加する必要があります。つまり、次のようになります。[self.window addSubview:myViewController.view];

編集: 問題は、3.1.3 が setRootViewController (組み込みではあるがパブリック変数ではない) にまだ応答している可能性があるため、どのバージョンであるかを確認する方法です。

于 2011-09-20T21:54:58.370 に答える