2012-10-04 19 views
11

Ho un problema in AppDelegate, quando eseguire l'applicazione ottengo questo errore:questa classe non è conforme ai codici di codifica per la vista chiave. '

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: 
    '[<UIApplication 0x856c820> setValue:forUndefinedKey:]: 
    this class is not key value coding-compliant for the key view.' 

Questo è il codice di AppDelegate.h

#import <UIKit/UIKit.h> 

@class ViewController; 

@interface AppDelegate : UIResponder <UIApplicationDelegate>{ 

     //UINavigationController *navigationController; 
} 

@property (strong, nonatomic) UIWindow *window; 


@property (copy, nonatomic) ViewController * viewController; 
@property (copy, nonatomic) UINavigationController * navigationController; 



@end 

Questo è il codice di AppDelegate.m

#import "AppDelegate.h" 

#import "RootViewController.h" 



    @implementation AppDelegate 



    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 
    { 
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

     RootViewController *rootMenu; 


     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
       rootMenu= [[RootViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil]; 
    } else { 
       rootMenu = [[RootViewController alloc]initWithNibName:@"ViewController_iPad" bundle:nil]; 
    } 


    self.navigationController =[[UINavigationController alloc]initWithRootViewController:rootMenu]; 

    self.window.rootViewController = self.navigationController; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

Cosa posso fare per risolvere questo errore? Ho riscritto il RootViewController, gettando nel cestino il vecchio, ma il problema rimane lo stesso.Grazie anticipatamente

risposta

20

Questo di solito accade quando una connessione di Interface Builder o Storyboard non è stata eseguita correttamente. A volte effettuerai una connessione e quindi cancellerai il codice a cui è stata effettuata la connessione. Interface Builder ha ancora un riferimento al codice, che causa l'errore di runtime conforme a chiave/valore. È inoltre possibile ottenere questo errore se non è stata assegnata la classe appropriata a un controller di visualizzazione. Se hai scritto il codice per un particolare controller di visualizzazione, assicurati di impostare la classe in modo appropriato in Interface Builder per quel View Controller.

+6

Se si fa clic su un oggetto in IB per visualizzare i collegamenti, ci sarà una "x" accanto a quelli che sono rotti, in modo da poterli eliminare. (Sì, dovrebbe generare invece degli avvertimenti in fase di compilazione .... forse lo farà ormai, controlla il tuo output.) –