Ios PerformsgueWithIdentifier destinationViewController与ARC解除锁定
这里有一个奇怪的问题: 我创建了一个带有两个视图控制器的故事板,与一个自定义segue(交叉分解)连接。我通过以下方式实现这一过程:Ios PerformsgueWithIdentifier destinationViewController与ARC解除锁定,ios,objective-c,segue,Ios,Objective C,Segue,这里有一个奇怪的问题: 我创建了一个带有两个视图控制器的故事板,与一个自定义segue(交叉分解)连接。我通过以下方式实现这一过程: -(void)transitionToIntro { [self performSegueWithIdentifier:@"ToIntro" sender:self]; } 这将转换,我看到了新的视图控制器,在initWithCoder和AwakeFromNib之后,它设置了UI,我看到了数据源和委托的属性设置。然后,dealloc突然被解雇了!此目标
-(void)transitionToIntro
{
[self performSegueWithIdentifier:@"ToIntro" sender:self];
}
这将转换,我看到了新的视图控制器,在initWithCoder和AwakeFromNib之后,它设置了UI,我看到了数据源和委托的属性设置。然后,dealloc突然被解雇了!此目标视图控制器已解除锁定。那当然一切都是铺位了。委托为零,数据源为零,因为包含它的viewcontroller对包含它的子视图无效
我不知道为什么会发生这种情况,源viewcontroller是否没有牢牢抓住目标viewcontroller
我已确保将故事板中设置的初始视图控制器设置为源代码视图控制器
感谢您的帮助解决方案:
确保源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;
}
}
在prepareForSegue方法中,是否存储segue的destinationViewcontroller?发布代码会很有帮助。我不是…我不是在做准备工作。。。也许这就是我的问题!啊,就是这样,我需要为源VC创建一个属性来保留dest VC,并在我的PrepareForegue中设置它。。。我对故事板有点陌生。