2012-10-03 7 views
5

Mam problem z RootViewController z mojej aplikacji. Po uruchomieniu aplikacji pojawia się ten błąd. Co to znaczy?ta klasa nie jest zgodna z kodowaniem kluczem kluczowym dla kluczowego obrazuView

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 

Mój kod w 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 

Mój kod w 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]; 

} 

RootViewController początkowo nazywany ViewController i zmieniłem nazwę. Czy można skorelować z błędem? Co mogę zrobić?

+1

Czy zauważyłeś, że komunikat o błędzie mówi, że próbujesz ustawić tę właściwość na 'UIApplication' ... Cały kod na świecie w' RootViewController' nie będzie miał znaczenia. Założę się, że w twoim pliku XIB jest uszkodzony link. Złe linki pojawią się z małymi objaśnieniami. – borrrden

+0

Jak znaleźć złe połączenie? –

+0

Nie wiem, czy to powoduje twój problem, ale robisz coś złego z bigImageView. Definiujesz go jako IBOutlet, ale przypisujesz go do instancji utworzonych w kodzie. Jeśli podłączasz go do IB do ImageView, który tam masz, kod ten zastąpi to. Prawdopodobnie nie powinno to być IBOutlet, ponieważ potrzebujesz różnych rzeczy w zależności od orientacji. – rdelmar

Odpowiedz

3

Oto kolejna możliwość: zmieniłeś nazwę klasy, ale zapomniałeś zmienić kod inicjalizacyjny UIViewController. Dla mnie to było to:

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

Raz zastąpił ciąg @ "OldViewController z" @ "NewViewController", problem odszedł.

14

W pewnym momencie ustawiasz @property. Następnie usunąłeś go ze swojego kodu, ale nie odłączyłeś go na swoim xib/storybooku. Musisz go znaleźć w swoim scenopisie, kliknąć prawym przyciskiem myszy i usunąć gniazdo.

Powiązane problemy