0

当用户在 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];
}

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

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

在以下行:[segue.destinationViewController setDisplayedPhoto:photo]; . 即使实现空白,错误仍然出现。我是objective-c的新手,可能我只是把一些事情搞砸了。

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

4

1 回答 1

1

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

于 2012-07-17T02:45:36.177 回答