2014-09-01 3 views
1

Первый раз постер, долго наблюдатель.Storyboard Segue Transition Effects

Я использую раскадровки для приложения, над которым я сейчас работаю, и требую больше перехода, чем просто идти вперед, для того, чтобы вернуться в частности. Всякий раз, когда я использую этот сеанс, у меня есть для возврата через меню, следующая кнопка, которая нажата, чтобы перейти к другому ViewController, приведет к краху всего приложения!

Понятия не имею, что происходит, я использую это в файле реализации

#import "SlideLeftSegue.h" 

@implementation SlideLeftSegue 

- (void)perform{ 
    UIView *sv = ((UIViewController *)self.sourceViewController).view; 
    UIView *dv = ((UIViewController *)self.destinationViewController).view; 

    UIWindow *window = [[[UIApplication sharedApplication] delegate] window]; 
    dv.center = CGPointMake(sv.center.x - sv.frame.size.width, dv.center.y); 
    [window insertSubview:dv belowSubview:sv]; 

    [UIView animateWithDuration:0.4 
        animations:^{ 
         dv.center = CGPointMake(sv.center.x, 
               dv.center.y); 
         sv.center = CGPointMake(sv.center.x + sv.frame.size.width, 
               dv.center.y); 
        } 
        completion:^(BOOL finished){ 
         [[self destinationViewController] 
          dismissViewControllerAnimated:NO completion:nil]; 
        }]; 
} 

@end 

Это мой файл заголовка

#import <UIKit/UIKit.h> 

// Move to the previous screen with slide animation. 

@interface SlideLeftSegue : UIStoryboardSegue 

@end 

Я все еще учусь, так что если у вас есть какие-либо идеи Что происходит , id оценивает объяснение на уровне новичка.

ответ

4

Вы можете добиться того, что с меньшим количеством кода

Чтобы представить контроллер представления:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UIViewController *view = [storyboard instantiateViewControllerWithIdentifier:@"ViewID"]; 
view.modalTransitionStyle = UIModalTransitionStyleCoverVertical; // you can try the other 3 UIModalTransitionStyle too 
[self presentViewController:view animated:YES completion:nil]; 

Чтобы вернуться:

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

Я сделал это, и это то, что он плюнул на меня , Нет видимых @interface для «SlideLeftSegue» заявляет селектор «dismissViewControllerAnimated: завершение:» – Jlentriken

+0

FYI, когда он выходит из строя от попыток перемещения между экранами с использованием SlideLeftSegue, он говорит «Тема 1: EXC_BAD_ACCESS (код = EXC_I386_GPFLT)» – Jlentriken

+0

Я понял, что вы пытаетесь представить представления, нажимая какие-то кнопки. В раскадровке, почему бы вам не настроить кнопку в контроллере исходного кода, а затем подключить свою кнопку с помощью Command-drag до вашего целевого представления. После этого, чтобы вернуться к исходному VC, используйте приведенный выше код. –

Смежные вопросы