2013-09-10 7 views
0

Я пытаюсь использовать настраиваемый переход. Я хочу «покрыть вертикальный» переход от View Controller 1 до 2, а затем View Controller 2 (в середине) скользят вниз снова при переходе к View Controller 3. Раскадровка показано ниже:Custom segue не работает

http://i.stack.imgur.com/bJYXI.png

Im используя учебник, связанный с этим сообщением. А также заменил код .m с кодом, представленным в ответе:

Xcode custom segue - Opposite of Cover Vertical (top to bottom) - COMPLETE NEWBIE

Я создал подкласс UIViewController и назвал его FromTopReplaceSegue. Мой .h и .m код показан ниже:

.h

#import <UIKit/UIKit.h> 

@interface FromTopReplaceSegue : UIViewController 
@property(nonatomic, readonly) id sourceViewController; 
@property(nonatomic, readonly) id destinationViewController; 

@end 

.m

#import "FromTopReplaceSegue.h" 

@interface FromTopReplaceSegue() 

@end 

@implementation FromTopReplaceSegue 

-(void)perform{ 
    UIViewController *sourceViewController = (UIViewController *) self.sourceViewController; 
    UIViewController *destinationViewController = (UIViewController *) self.destinationViewController; 
    [sourceViewController.view addSubview:destinationViewController.view]; 
    [destinationViewController.view setFrame:sourceViewController.view.window.frame]; 
    [destinationViewController.view setTransform:CGAffineTransformMakeTranslation(0, -sourceViewController.view.frame.size.height)]; 
    [destinationViewController.view setAlpha:1.0]; 

    [UIView animateWithDuration:0.75 
          delay:0.0 
         options:UIViewAnimationOptionTransitionFlipFromTop 
        animations:^{ 
         [destinationViewController.view setTransform:CGAffineTransformMakeTranslation(0, 0)]; 
         [destinationViewController.view setAlpha:1.0]; 
        } 
        completion:^(BOOL finished){ 
         [destinationViewController.view removeFromSuperview]; 
         [sourceViewController presentViewController:destinationViewController animated:NO completion:nil]; 
        }];} 

@end 

Когда я пытаюсь запустить симулятор я могу легко получить от контроллера View 1 до 2 но он падает, когда я пытаюсь перейти от представления контроллера 2 к 3, используя пользовательский сегмент.

Может кто-нибудь помочь.

Большое вам спасибо! Борьба здесь! :)

ответ

5

Прошло некоторое время с моего iOS-дня, но не должно быть .h не определить подкласс класса seque вместо viewcontroller? Как

@interface FromTopReplaceSegue : UIStoryboardSegue 

Вы можете прочитать its documentation для некоторых заметок на подклассы, а ...