2012-10-03 3 views
5

ich ein Problem mit dem RootViewController meiner Bewerbung habe. Wenn ich die App starte, erhalte ich diesen Fehler. Was bedeutet das?diese Klasse ist nicht Schlüssel-Wert-Codierung-konform für den Schlüssel Imageview

NSUnknownKeyException', reason: '[<UIApplication 0x8634010> setValue:forUndefinedKey:]:  this class is not key value coding-compliant for the key bigImageView.' 
First throw call stack: 
(0x1992012 0x1357e7e 0x1a1afb1 0xe04711 0xd85ec8 0xd859b7 0xdb0428 0x4bc0cc 
0x136b663 0x198d45a 0x4babcf 0x4bc98d 0x29eceb 0x29f002 0x29ded6 0x2af315 0x2b024b 
0x2a1cf8 0x1dbedf9 0x1dbead0 0x1907bf5 0x1907962 0x1938bb6 0x1937f44 0x1937e1b 0x29d7da 0x29f65c 0x2c6d 0x2b95) 
libc++abi.dylib: terminate called throwing an exception 

Mein Code in RootViewController.h

#import <UIKit/UIKit.h> 


    @interface RootViewController : UIViewController <UIGestureRecognizerDelegate>{ 

    } 

@property (nonatomic, copy)IBOutlet UIImageView * bigImageView; 
@property (nonatomic, assign)BOOL fromRootViewController; 


- (void)handleTap:(UITapGestureRecognizer *)recognizer; 



@end 

Mein Code in RootViewController.m

#import "RootViewController.h" 
    #import "MenuViewController.h" 

    @interface RootViewController() 

    @end 

    @implementation RootViewController 

    @synthesize bigImageView; 
    @synthesize fromRootViewController; 

    - (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice]orientation]; 

      if(deviceOrientation == UIInterfaceOrientationPortrait || deviceOrientation== UIInterfaceOrientationPortraitUpsideDown) { 
    self.bigImageView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"milanocina_V.png"]]; 

} 
else if (deviceOrientation== UIInterfaceOrientationLandscapeRight){ 
    self.bigImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"milanocina_O.png"]]; 

} 
else if (deviceOrientation==UIInterfaceOrientationLandscapeLeft){ 

    self.bigImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"milanocina_O.png"]]; 



} 

[self.view addSubview:self.bigImageView]; 

UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
recognizer.delegate = self; 
[self.view addGestureRecognizer:recognizer]; 

} 

Die RootViewController zunächst Viewcontroller genannt und ich habe den Namen geändert. Kann mit Fehlern korreliert werden? Was kann ich tun?

+1

Wussten Sie, dass die Fehlermeldung feststellen, sagt, dass Sie den Code, der Eigenschaft festlegen auf 'UIApplication' ... Alles in der Welt auf' RootViewController' einen Unterschied machen, wird nicht versuchen. Ich wette, es gibt einen fehlerhaften Link in Ihrer XIB-Datei. Schlechte Links werden mit kleinen Erklärungspunkten angezeigt. – borrrden

+0

Wie finde ich die schlechte Verbindung? –

+0

Ich weiß nicht, ob dies Ihr Problem verursacht, aber Sie etwas falsch mit bigImageView tun. Sie definieren es als IBOutlet, weisen es jedoch Instanzen zu, die im Code erstellt wurden. Wenn Sie es in IB mit einem ImageView verbinden, das Sie dort haben, dann überschreibt der Code das. Es sollte wahrscheinlich kein IBOutlet sein, da es abhängig von der Orientierung unterschiedliche Dinge braucht. – rdelmar

Antwort

3

Hier ist eine andere Möglichkeit: Sie umbenannt Ihre Klasse, aber vergessen Sie Ihre UIViewController Initialisierungscode zu ändern. Für mich war es dies:

NewViewController *vc; 
vc = [[NewViewController alloc] initWithNibName:@"OldViewController" bundle:nil]; 

Sobald ich den String @ "OldViewController" mit @ "NewViewController", das Problem ging weg ersetzt.

14

Irgendwann stellen Sie eine @property. Sie haben es dann aus Ihrem Code gelöscht, aber nicht in Ihrem xib/stackboard entfernt. Sie müssen es in Ihrem Storyboard finden, klicken Sie mit der rechten Maustaste darauf, und löschen Sie die Steckdose.

Verwandte Themen