2012-10-03 12 views
5

Ho un problema con il RootViewController della mia applicazione. Quando eseguo l'app, ottengo questo errore. Cosa significa?questa classe non è compatibile con la codifica del valore chiave per la chiave 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 

Il mio codice 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 

Il mio codice 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]; 

} 

Il RootViewController inizialmente chiamato ViewController e ho cambiato il nome. Può essere correlato con l'errore? Cosa posso fare?

+1

Si è notato che il messaggio di errore indica che si sta tentando di impostare tale proprietà su 'UIApplication' .... Tutto il codice nel mondo su' RootViewController' non farà la differenza. Scommetto che c'è un link difettoso nel tuo file XIB. I collegamenti errati verranno visualizzati con pochi punti di spiegazione. – borrrden

+0

Come trovo la connessione errata? –

+0

Non so se questo causa il tuo problema, ma stai facendo qualcosa di sbagliato con bigImageView. Lo si definisce come IBOutlet, ma poi lo si assegna alle istanze create nel codice. Se lo stai collegando in IB a un ImageView che hai lì, allora il codice lo sovrascriverà. Probabilmente non dovrebbe essere un IBOutlet, dal momento che hai bisogno che siano cose diverse a seconda dell'orientamento. – rdelmar

risposta

3

Ecco un'altra possibilità: hai rinominato la tua classe, ma hai dimenticato di cambiare il codice di inizializzazione di UIViewController. Per me, è stato questo:

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

Una volta ho sostituito la stringa @ "OldViewController" con @ "NewViewController", il problema è andato via.

14

A un certo punto, si imposta uno @property. L'hai quindi cancellato dal tuo codice ma non lo hai sganciato nel tuo xib/storyboard. Devi trovarlo nello storyboard, fare clic su di esso e eliminare la presa.

Problemi correlati