segue.destinationViewController - NSInvalidArgumentException

时间:2012-07-17 02:39:09

标签: objective-c xcode

当用户在UITableViewController中选择一行时,我想要转到另一个viewController并将其UIImageView设置为先前设置的图像。现在,我正在使它成为通用的 - 总是显示/images/en.jpeg。

flickrTVC.m(UITableViewController):

@implementation flickrTVC

...

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"showPhoto"])
        UIImage *photo = [UIImage imageWithContentsOfFile:@"images/en.jpeg"];
        [segue.destinationViewController setDisplayedPhoto:photo];
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"showPhoto" sender:self];
}

我在我的photoViewController.h(segue.destinationViewController)中有 - (void)setDisplayedPhoto:(UIImage *)image; (它将self.photo设置为图像)。 我正在

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController setDisplayedPhoto:]: unrecognized selector sent to instance 0x1f5c4a60'

在以下行: [segue.destinationViewController setDisplayedPhoto:photo]; 。即使执行空白,错误仍会显示。 我是Objective-c的新手,可能,我只是搞砸了一些东西。

任何帮助将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:1)

发生异常是因为那里的对象没有定义方法setDisplayedPhoto:。这可能是因为segue.destinationViewController当前设置为完全不同的控制器(例如,对于与您认为不同的视图)。也可能是你已经定义了与该方法类似但不完全相同的东西;如果是这样,那么编译器可能已发出关于setDisplayedPhoto:方法调用的警告。