2012-08-03 23 views
6

continuo a ricevere l'errore:Selector non riconosciuto inviato al grado UIViewController

NSInvalidArgumentException', reason: '-[UIViewController setPhotoCellName:]: unrecognized selector sent to instance

quando inserisco la mia preparazione per la chiamata segue. Attualmente ho

TabBarController->NavigationController->TableViewController->TableViewController->ViewController

con un'immagine dell'interfaccia utente.

Il problema si verifica quando provo a passare dal secondo controller TableView al ViewController. Ho il setup dei passaggi dalla cella Prototype al ViewController attuale. Entra nel seguito e si blocca. Sto cercando di passare una proprietà NSArray oltre allo viewController per poter utilizzare un URL al suo interno e visualizzare lo UIImage. PhotoInPlace contiene l'array che sto cercando di passare. Ecco il codice.

Codice myTableViewControllerPhotoLocation.m

#import "myTableViewControllerPhotoLocation.h" 
#import "FlickrImageViewController.h" 

@interface myTableViewControllerPhotoLocation() 
@end 

@implementation myTableViewControllerPhotoLocation 
@synthesize photoInPlace = _photoInPlace; //Contains NSArray to pass 


-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"Photo Display"]){ 
     NSIndexPath* indexPath = [self.tableView indexPathForCell:sender]; 
     NSLog(@" Dicitonary = %@", [self.photoInPlace objectAtIndex:indexPath.row]); //Returns the picked cell 
     NSLog(@"%@", [self.photoInPlace class]); //returns NSArray 
     NSLog(@"%@", [self photoInPlace]); //Returns the array 

     [segue.destinationViewController setPhotoCellName:[self.photoInPlace objectAtIndex:indexPath.row]]; 
     //Crashes HERE! 
    } 
} 

Codice FlickrImageViewController.h

@property (nonatomic, strong) NSArray* photoCellName; 

Codice FlickrImageViewController.m

#import "FlickrImageViewController.h" 

@interface FlickrImageViewController() 
@end 

@implementation FlickrImageViewController 
@synthesize photoCellName = _photoCellName; //property declared in header 


-(void) setPhotoCellName:(NSArray *)photoCellName{ 
    if(!_photoCellName) 
     _photoCellName = [[NSArray alloc] initWithArray:photoCellName]; 
    else { 
     _photoCellName = photoCellName; 
    } 
} 
+0

Ho usato questo stile di codice per passare una matrice nella TVC precedente Non so perché si blocca su questo –

risposta

16

Credete che la vostra destinazione sia un oggetto dallo FlickrImageViewController ma l'app no. Guarda la classe che hai assegnato a quel controller nello storyboard; in base all'errore, è un UIViewController nuda.

+0

quindi devi assegnare la visualizzazione nello storyboard della classe controller? –

+0

Non la vista, il controller della vista. Quando viene caricato dallo storyboard, il runtime deve conoscere il tipo di oggetto da creare. –

+0

Ho cambiato la classe del ViewController in FlickrImageViewController, ma ora ho un nuovo errore, [NSArray initWithArray: range: copyItems:]: l'argomento array non è un NSArray –

5

Suona come hai accidentalmente ottenuto un UIViewController plain vanilla piuttosto di un FlickrImageViewController. Forse hai dimenticato di assegnare la classe del controller?

Problemi correlati