当用户在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的新手,可能,我只是搞砸了一些东西。
任何帮助将不胜感激。 谢谢!
答案 0 :(得分:1)
发生异常是因为那里的对象没有定义方法setDisplayedPhoto:
。这可能是因为segue.destinationViewController
当前设置为完全不同的控制器(例如,对于与您认为不同的视图)。也可能是你已经定义了与该方法类似但不完全相同的东西;如果是这样,那么编译器可能已发出关于setDisplayedPhoto:
方法调用的警告。