为什么第二个替换segue到详细视图控制器总是崩溃?

时间:2012-07-12 21:20:13

标签: ios5 replace crash uisplitviewcontroller segue

我将splitViewController用于iPad程序。在主视图中,这是一个tableviewController,将显示照片名称列表。当您单击其中一个照片名称时,照片将显示在详细视图中。

现在的问题是,当您第一次点击照片时,照片将正确显示;但是当你第二次在表格中选择一张照片时,程序会崩溃!

  

我的代码

     

在故事板中,我构建了一个替换segue,从主viewController到detailView Controller。在tableView:didSelectRowAtIndexPath:主视图控制器中,我写道:    [self performSegueWithIdentifier:@“Photo Show”sender:self];

     

在prepareForSegue:sender:中,我写道:    [segue.destinationViewController setCurrentPhotoInfo:self.currentPhoto];

     

在detailViewController中,我在setCurrentPhotoInfo中编写代码,如下所示:

self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
[self.imageView setImage: image];
self.scrollView.contentSize = self.view.bounds.size;
self.scrollView.delegate = self;
[self.scrollView addSubview:self.imageView];
[self.view addSubview:self.scrollView];
  

崩溃信息

当程序崩溃时,我在[self performSegueWithIdentifier:@“Photo Show”sender:self]中遇到了崩溃。崩溃信息是:      [PhotoShowViewController respondsToSelector:]:发送到解除分配的实例0x6c9eae0的消息。

要调试问题,我编写代码来观察目标视图控制器地址在prepareForSegue中:

id last = [self.splitViewController.viewControllers lastObject];
id destination = segue.destinationViewController;

令我惊讶的是,最后目的地不同!我认为他们应该是一样的。 更令人惊讶的是,当您完成第一个segue并单击照片表进入第二个segue时,您会发现最后一个和目标都已更改:目标更改为新地址,最后一个等于旧目标

崩溃地址“0x6c9eae0”只是旧的最后地址。

为什么会这样?我很困惑。

0 个答案:

没有答案