无法识别的选择器发送到实例UIViewController

时间:2012-08-03 21:32:15

标签: objective-c xcode uiviewcontroller uitableview segue

我一直收到错误:

  

NSInvalidArgumentException',原因:' - [UIViewController setPhotoCellName:]:无法识别的选择器发送到实例

当我进入我的segue电话准备时。目前我有

  

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

上面有UI图片。

当我尝试从第二个TableView控制器转到ViewController时出现问题。我有从Prototype Cell到实际ViewController的segue设置。它进入了segue和崩溃。我正在尝试将NSArray属性传递给viewController,以便能够在其中使用网址并显示UIImage。 PhotoInPlace包含我试图传递的数组。这是代码。

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

FlickrImageViewController.h代码

@property (nonatomic, strong) NSArray* photoCellName;

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;
    }
}

2 个答案:

答案 0 :(得分:17)

您认为您的目的地是FlickrImageViewController中的对象,但应用却没有。查看您在故事板中为该控制器分配的类;根据错误,它是一个裸UIViewController

答案 1 :(得分:5)

听起来你不小心得到了普通的UIViewController而不是FlickrImageViewController。也许你忘了分配控制器的类?