【问题标题】:segue.destinationViewController - NSInvalidArgumentExceptionsegue.destinationViewController - NSInvalidArgumentException
【发布时间】:2012-07-17 02:39:09
【问题描述】:

当用户在 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 的新手,可能我只是在搞砸一些事情。

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

【问题讨论】:

    标签: objective-c xcode


    【解决方案1】:

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

    【讨论】:

    • 新手错误...我没有将 ViewController 的类从 generic 更改为 photoViewController!感谢您的快速响应,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多