0

создать пользовательский SEGUE:Краш с пользовательскими 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, это вызывает ответ на любой объект на экране.

Любая помощь? Спасибо

ответ

0

Вы создаете destinationViewController локально в методе, вы должны сделать destinationView Controller (destination) в качестве члена класса, чтобы он был доступен.

+0

Не так. Посмотрите на UIStoryboardSegue, который подклассифицирован. –

1

Поскольку вы делаете это:

[source.view addSubview:destination.view];

вам сначала нужно сделать это:

[source addChildViewController:destination];

Не уверен, что если он будет решать ваши проблемы, хотя.