90 votes

Pousser segue dans xcode avec aucune animation

Je suis en utilisant une écriture de scénarii et de pousser enchaîne dans xcode, mais je veux avoir enchaîne que simplement apparaître l'affichage suivant, de ne pas glisser la vue suivante (comme lorsque vous utilisez une barre d'onglet et l'affichage suivant apparaît).

Est-il un simple moyen d'avoir normales push enchaîne juste "apparaître" et non pas "glisser", sans avoir besoin d'ajouter personnalisé enchaîne?

Tout fonctionne parfaitement l'affaire, je veux juste supprimer la diapositive d'animation entre les points de vue.

143voto

Ian Points 1129

J'ai été en mesure de le faire par la création d'une coutume segue.

(Basé sur https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomSegues/CreatingCustomSegues.html#//apple_ref/doc/uid/TP40007457-CH16-SW1)

PushNoAnimationSegue.h

#import <UIKit/UIKit.h>

/*
 Move to the next screen without an animation.
 */
@interface PushNoAnimationSegue : UIStoryboardSegue

@end

PushNoAnimationSegue.m

#import "PushNoAnimationSegue.h"

@implementation PushNoAnimationSegue

-(void) perform{
    [[[self sourceViewController] navigationController] pushViewController:[self   destinationViewController] animated:NO];
}

@end

En Storyboard:

  1. Sélectionnez la séquence
  2. Jeu de "Style" à la "Coutume"
  3. Set "Segue Catégorie" à "PushNoAnimationSegue'

sélectionnez la séquence

35voto

zavié Points 376

Ian réponse fonctionne très bien!

Voici une Swift version de la Séquence, si quelqu'un a besoin de:

PushNoAnimationSegue.swift

import UIKit

/// Move to the next screen without an animation.
class PushNoAnimationSegue: UIStoryboardSegue {

    override func perform() {
        let source = sourceViewController as UIViewController
        if let navigation = source.navigationController {
            navigation.pushViewController(destinationViewController as UIViewController, animated: false)
        }
    }

}

6voto

Richard Points 522

J'ai maintenant réussi à faire cela en utilisant le code suivant:

CreditsViewController *creditspage = [self.storyboard instantiateViewControllerWithIdentifier:@"Credits"];
[UIView beginAnimations:@"flipping view" context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:YES];
[self.navigationController pushViewController:creditspage animated:NO];
[UIView commitAnimations];

Espérons que cela aide quelqu'un d'autre!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X