我想将图像发送到下一个气味。但是失败。

这是我的代码

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"prepareForSegue start");
    NSLog(@"count is %d",count);

    //bigStyle1 is a NSArray,full of UIImage
    //bigImage is a UIImageView outlet
    if ([bigStyle1 objectAtIndex:count]==nil) {
        NSLog(@"no array image");
    }
    viewController3.bigImage.image=[bigStyle1 objectAtIndex:count];
    if (viewController3.bigImage.image==nil) {
        NSLog(@"no controller image");
    }

    NSLog(@"secondToThird");
    NSLog(@"prepareForSegue end");
}


这是Xcode的日志

2013-03-12 15:15:38.683 animation[1876:f803] prepareForSegue start
2013-03-12 15:15:50.825 animation[1876:f803] count is 0
2013-03-12 15:17:10.829 animation[1876:f803] no controller image


似乎问题出在图像分配上,为什么分配失败?

更新
viewController3不是nil。但是bigImage是nil。我不知道为什么。我实际上将bigImage连接到图像视图

最佳答案

我怀疑您打算viewController3作为segue的目的地。在这种情况下,您应该这样设置:

viewController3 = segue.destinationViewController;


我进一步怀疑是viewController3.bigImage。如果是这样,您就会遇到问题,因为UIImageView到系统发送viewController3时尚未加载其视图层次结构,因此尚未设置prepareForSegue:sender:。它为nil,并且在nil上设置属性不会执行任何操作(没有警告或错误消息)。

最好直接给viewController3.bigImage一个viewController3属性,然后将图像存储在该属性上。然后,在imageviewController3方法中,将图像从该属性复制到viewDidLoad

另外,您可以通过强制self.bigImage.image将其视图加载到viewController3中,而仅询问其视图即可:

[viewController3 view];  // forces it to load its view hierarchy if necessary
viewController3.bigImage.image = [bigStyle1 objectAtIndex:count];

关于ios - prepareForSegue中的赋值为false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15355852/

10-09 02:05