2012-10-04 17 views
11

Tengo un problema en AppDelegate, cuando se ejecuta la aplicación me sale este error:esta clase no es un valor clave que cumple con la codificación para la vista clave. '

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

Este es el código de 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 

Este es el código de 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; 
} 

¿Qué puedo hacer para resolver este error? He reescrito RootViewController, tirando a la papelera el anterior, pero el problema sigue siendo el mismo. Gracias de antemano

Respuesta

20

Esto suele ocurrir cuando no se ha realizado correctamente una construcción del Interface Builder o Storyboard. Algunas veces establecerá una conexión y luego eliminará el código en el que se realizó la conexión. Interface Builder todavía tiene una referencia al código, que causa el error de tiempo de ejecución de la clave/valor. También puede obtener este error si no ha asignado la clase adecuada a un controlador de vista. Si ha escrito un código para un controlador de vista en particular, asegúrese de configurar la clase de manera apropiada en el Interface Builder para ese View Controller.

+6

Si hace clic en los elementos de IB para mostrar las conexiones, habrá una "x" al lado de los que están rotos, por lo que puede eliminarlos. (Sí, debería generar advertencias de tiempo de compilación en su lugar ... tal vez lo haga ahora, verifique su salida). –

Cuestiones relacionadas