2012-08-03 14 views
6

Wciąż otrzymuję błąd:Nierozpoznany selektor wysyłane do instancji UIViewController

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

kiedy Moje przygotowania do rozmowy Segue. Obecnie mam

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

z obrazem interfejsu użytkownika.

Problem występuje, gdy próbuję przejść z drugiego kontrolera TableView do ViewController. Mam ustawienie przełącznika z Prototype Cell do rzeczywistego ViewController. Wchodzi w tryb i rozbija. Próbuję przekazać właściwość NSArray do viewController, aby móc użyć adresu URL i wyświetlić UIImage. PhotoInPlace zawiera tablicę, którą próbuję przekazać. Oto kod.

Kod 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! 
    } 
} 

Kod FlickrImageViewController.h

@property (nonatomic, strong) NSArray* photoCellName; 

Kod 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

Użyłem tego stylu kodu, aby przekazać tablicę w poprzedniej TVC Nie wiem, dlaczego jej awarie na tym –

Odpowiedz

16

Uważasz, że miejsce docelowe jest obiektem z FlickrImageViewController, ale aplikacja nie. Spójrz na klasę, do której przypisałeś kontroler w swoim scenorysie; zgodnie z błędem jest to gołe UIViewController.

+0

, więc trzeba przypisać widok w storyboardie klasy kontrolerów? –

+0

Nie widok, kontroler widoku. Po załadowaniu z storyboardu środowisko wykonawcze musi wiedzieć, jaki typ obiektu utworzyć. –

+0

Zmieniłem klasę ViewController na FlickrImageViewController, ale teraz dostaję nowy błąd, [NSArray initWithArray: range: copyItems:]: argument tablicy nie jest NSArray –

5

Brzmi jakbyś przypadkowo dostał zwykły waniliowy UIViewController raczej niż kontroler FlickrImageViewController. Może zapomniałeś przypisać klasę kontrolera?

Powiązane problemy