2012-08-03 29 views
6

sigo obteniendo el error:Selector no reconocido enviado a Instancia UIViewController

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

cuando entro en mi segue prepararse para la llamada. Actualmente tengo

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

con una imagen UI en él.

El problema se produce cuando intento ramificarse desde el segundo controlador TableView a la ViewController. Tengo la configuración de segue de la Celda de prototipo al ViewController real. Entra en la transición y se bloquea. Estoy intentando pasar una propiedad NSArray al viewController para poder usar una URL y mostrar el UIImage. PhotoInPlace contiene la matriz que estoy intentando pasar. Aquí está el código.

Código 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! 
    } 
} 

Código FlickrImageViewController.h

@property (nonatomic, strong) NSArray* photoCellName; 

Código 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

Utilicé este estilo de código para pasar una matriz en el TVC anterior. No sé por qué se estrelló en este –

Respuesta

16

Cree que su destino es un objeto del FlickrImageViewController pero la aplicación no. Mire la clase que ha asignado ese controlador en su guión gráfico; de acuerdo con el error, es un bare UIViewController.

+0

, por lo que debe asignar la vista en el guión gráfico a la clase de controladores. –

+0

No es la vista, el controlador de vista. Cuando se carga desde el guión gráfico, el tiempo de ejecución debe saber qué tipo de objeto crear. –

+0

Cambié la clase del ViewController al FlickrImageViewController pero ahora recibo un nuevo error, [NSArray initWithArray: range: copyItems:]: el argumento de matriz no es un NSArray –

5

Suena como que tienes un accidente con sabor de vainilla en lugar UIViewController que un FlickrImageViewController. ¿Tal vez olvidaste asignar la clase del controlador?

Cuestiones relacionadas