2011-09-20 3 views
0

Je travaille avec Xcode 4 et mon logiciel fonctionne bien sur l'iPhone 4 et le simulateur mais quand je le tester sur des appareils comme l'iPhone 2G ou 3Gs j'ai cette erreur immédiatement quand je lance le code:Xcode 4 iphone 3.1.3 applications ne fonctionnent pas

Fin de l'application en raison d'une exception non interceptée 'NSUnknownKeyException', raison: '[setValue: forUndefinedKey:]: cette classe n'est pas compatible avec la valeur de clé pour la clé rootViewController.'

chercher le moyen de résoudre le problème que je construis un programme mondial de bonjour et ne travaille pas sur iPhone 3gs ... la recherche des solutions i trouvé ceci:

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

utilisation addSubview comme celui-ci et le programme devrait fonctionner correctement ...

Ok la gestion Bonjour tout le monde bien, mais mon programme ne fonctionne pas du tout ...

peut-être c'est le code que je devrais changer ... (mais je ne suis pas vraiment ..)

- (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; 

} 

je recherche quelques informations sur ce problème, mais chaque fois que je recherche je trouve que pour changer la ligne self.window.rootViewController = self.viewController ;

mais malheureusement ne pas aider beaucoup.

merci les gars pour vous êtes patience :)

EDIT:

je change le code

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

à

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

mais l'erreur est toujours le même. ..

Répondre

1

UIWindow n'a pas de propriété rootViewController dans les versions iOS inférieures à 4.0. Par conséquent, si vous voulez prendre en charge ces versions, vous ne pouvez pas utiliser self.window.rootViewController = myViewController;, vous devez généralement ajouter la vue du contrôleur à la fenêtre, c'est-à-dire: [self.window addSubview:myViewController.view];

Editer: le problème est de savoir de quelle version il s'agit, depuis 3.1.3 aurait pu encore répondre à setRootViewController (intégré mais pas variable publique).

+0

je commente le code avec le rootViewController et j'utilise '[self.window addSubview: self.viewController.view];' mais rien ne change ... même erreur ... peut-être quelque part il y a un autre appel à cette méthode .. – ilmetu

+0

je recherche dans le programme entier mais il n'y a aucun autre appel à cette propriété ... toujours l'erreur ** [ setValue: forUndefinedKey:]: cette classe n'est pas la clé codage-conforme pour la clé rootViewController. ** – ilmetu

Questions connexes