2012-10-04 8 views
11

Ich habe ein Problem in AppDelegate, wenn die App laufen bekomme ich diesen Fehler:Diese Klasse ist nicht Schlüsselcodierkonform für die Schlüsselansicht. '

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

Dies ist der Code von AppDelegate.h ist

#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 

Dies ist der Code von AppDelegate.m ist

#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; 
} 

Was kann ich tun, um diesen Fehler zu beheben? Ich habe den RootViewController neu geschrieben, werfen den Müll in den alten, aber das Problem bleibt gleich. Vielen Dank im Voraus

Antwort

20

Dies passiert normalerweise, wenn eine Interface Builder oder Storyboard Verbindung nicht richtig gemacht wurde. Manchmal werden Sie eine Verbindung herstellen und dann den Code löschen, mit dem die Verbindung hergestellt wurde. Interface Builder hat immer noch einen Verweis auf den Code, der den Schlüssel/Wert-konformen Laufzeitfehler verursacht. Sie können diesen Fehler auch erhalten, wenn Sie einem View-Controller nicht die richtige Klasse zugewiesen haben. Wenn Sie Code für einen bestimmten View-Controller geschrieben haben, stellen Sie sicher, dass Sie die Klasse im Interface Builder für diesen View-Controller entsprechend festlegen.

+6

Wenn Sie auf Elemente in IB rechten Maustaste auf die Verbindungen angezeigt werden, gibt es ein „x“ neben diejenigen, die gebrochen sind, so dass Sie sie löschen können. (Ja, es sollte stattdessen Kompilierungswarnungen generieren ... vielleicht tut es das jetzt; überprüfe deine Ausgabe.) –

Verwandte Themen