0

我创建了一个自定义 segue:

-(void)perform{

UIViewController *destination = [self destinationViewController];
UIViewController *source = [self sourceViewController];

[source.view addSubview:destination.view];

CGRect destionationFrame = destination.view.frame;
CGRect sourceFrame = source.view.frame;
CGSize sourceSize = CGSizeMake(sourceFrame.size.height, sourceFrame.size.width);

destination.view.frame = CGRectMake(sourceSize.width,0,destionationFrame.size.width,destionationFrame.size.height);

[UIView animateWithDuration:0.3
                      delay:0
                    options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState
                 animations:^{
                     destination.view.frame = CGRectMake(sourceSize.width-destionationFrame.size.width,0,destionationFrame.size.width,destionationFrame.size.height);
                 } completion:^(BOOL finished) {
                     //[source presentModalViewController:destination animated:NO completion:nil];
                     //[source presentModalViewController:destination animated:NO];
                 }];

}

问题是,如果我在动画完成后什么都不做,触摸目标控制器的任何控件都会导致应用程序崩溃。

如果我制作一个 presentModalViewController 会导致屏幕上的任何对象都有响应。

有什么帮助吗?谢谢

4

2 回答 2

1

既然你这样做:

[source.view addSubview:destination.view];

你首先需要这样做:

[source addChildViewController:destination];

不确定它是否会解决您的问题。

于 2013-05-17T13:16:24.513 回答
0

您正在方法中本地创建destinationViewController,您应该将destinationView 控制器(目标)作为类成员,以便它的范围在那里。

于 2013-05-17T12:41:32.173 回答