0

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

这是我的代码

- (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

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

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

4

1 回答 1

2

我怀疑你打算viewController3成为转场的目的地。在这种情况下,您应该像这样设置它:

viewController3 = segue.destinationViewController;

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

最好直接给出viewController3一个image属性,并将图像存储在该属性上。然后,在viewController3'sviewDidLoad方法中,将图像从该属性复制到self.bigImage.image.

或者,您可以通过询问它的视图来强制viewController3加载它的视图:prepareForSegue:sender:

[viewController3 view];  // forces it to load its view hierarchy if necessary
viewController3.bigImage.image = [bigStyle1 objectAtIndex:count];
于 2013-03-12T08:04:33.743 回答