2

这里奇怪的问题:

我创建了一个带有两个视图控制器的故事板,并与自定义 segue(交叉溶解)连接。我通过以下方式使segue发生:

-(void)transitionToIntro
{ 
    [self performSegueWithIdentifier:@"ToIntro" sender:self];
}

这种转换,我看到了新的视图控制器,在 initWithCoder 和 AwakeFromNib 之后它设置了 UI,我看到数据源和委托的属性已设置。然后突然dealloc被解雇了!并且此目标视图控制器已解除分配。然后当然一切都被铺平了。代表为零,数据源为零,因为包含视图控制器对包含它的子视图无效...

我不知道为什么会发生这种情况,源视图控制器是否没有对目标视图控制器保持强大的控制?

我确保将故事板中的初始视图控制器设置为我的源视图控制器。

任何帮助表示赞赏

4

1 回答 1

2

解决方案:

确保您的源 VC 保留对目标 VC 的强引用,并在 prepareForSegue 中进行设置。如果没有,您将在运行 initWithCoder 和 AwakeFromNib 后看到您的目标 VC dealloc 本身。

@property (nonatomic, strong) IntroViewController *destVC; 




 -(void)transitionToIntro
{

    [self performSegueWithIdentifier:@"ToIntro" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if ([segue.identifier isEqualToString:@"ToIntro"])
    {
        IntroViewController *dest = [segue destinationViewController];
       self.destVC = dest;
    }
}
于 2013-06-13T06:13:09.147 回答