我有一个FirstViewController和SecondViewController。我在他们之间做了一个“CustomSegue”。
在CustomSegue中执行方法。
- (void)perform
{
// Add your own animation code here.
CGFloat height = [UIScreen mainScreen].bounds.size.height;
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat offset = 60;
UIView *sourceView = [self.sourceViewController view];
UIView *destinationView = [self.destinationViewController view];
destinationView.frame = CGRectMake(-width, 0, width-offset, height);
UIWindow *window = [UIApplication sharedApplication].keyWindow;
[window insertSubview:destinationView aboveSubview:sourceView];
[UIView animateWithDuration:0.3
delay:0.0
options: UIViewAnimationOptionCurveEaseInOut
animations:^{
sourceView.frame = CGRectOffset(sourceView.frame, width-offset, 0);
destinationView.frame = CGRectOffset(destinationView.frame, width, 0);
}
completion:^(BOOL finished){
// [[self sourceViewController] presentModalViewController:[self destinationViewController] animated:NO];
}];
}
蓝色的是第一个视图控制器,绿色的是第二个视图控制器。我已经从第一个视图控制器的中心按钮启动了segue。
现在我想从第二个视图控制器(Green One)的“按钮”动作中解开segue。我将按钮链接到SecondViewController中的展开操作。但它崩溃了应用程序。显示EXC_BAD_ACCESS。没有任何错误登录调试器。
当我取消注释完成块中的代码时。它将触发展开动作。但是当我发表评论时,它会让应用程序崩溃。但是如果我在完成块中取消注释代码。第二个视图控制器的视图占据整个屏幕,这不是我想要的。