2014-06-16 1 views
4

Alors ... La vérité est, j'ai navigué à travers la documentation presque aveuglément. Je ne comprends vraiment pas pourquoi il n'y a pas de code illustrant comment utiliser certaines méthodes. Mais oui, assez pleurnicher de moi.Transitions UIViewController personnalisées avec animateWithDuration dans Swift

J'ai un contrôleur de vue qui est conforme à UIViewControllerTransitioningDelegate et UIViewControllerAnimatedTransitioning. J'ai quelques animations (en utilisant facebook pop) qui glissent essentiellement certains éléments de la vue. Une fois ces animations terminées, je souhaite passer au contrôleur de vue suivant.

Je prepareForSegue comme si substituée:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 

     self.transitioningDelegate = self; 

     let targetViewController = self.storyboard.instantiateViewControllerWithIdentifier("chooseSigilViewController") as UIViewController; 

     self.presentViewController(targetViewController, animated: true, completion: nil); 

     // slide out ui elements in the current UIViewController 
     slideLabelsOut(greetingsLabel, nameUtilityLabel); 
     slideTextFieldOut(inputPlayerNameTextField); 
     slideProceedButtonOut(sender as UIButton); } 

I que mis en place la durée de la transition et l'animation réelle ... ce que j'ai problème avec cette ligne est:

UIView.animateWithDuration(self.transitionDuration(transitionContext), animations: <#(() -> Void)?#>, completion: <#((Bool) -> Void)?#>) 

Comment faire Je configure mon code dans les animations: et completion: arguments.

Je l'ai vu utilisé dans le code Obj-C:

^{ // code goes here } 

Je l'ai essayé de cette façon, cela ne fonctionnait pas. De plus, je me sens vraiment mal à l'aise car je ne sais pas vraiment ce que "^" fait même?

Répondre

3

Essayez quelque chose comme ceci:

UIView.animateWithDuration(self.transitionDuration(transitionContext), delay: 0, options: .CurveLinear, animations: { 
    // Your animation 
}, completion: { 
    (finished: Bool) in 
    // Your completion 
}) 
+0

grand homme merci! J'étais complètement sur la mauvaise piste avec celui-ci. Alors, quel est ce mot clé "in" après le (terminé: Bool)? –

+0

@MartinVelchevski 'in' permet d'utiliser le booléen fini dans le bloc d'achèvement :) – Houssni

+0

Merci d'avoir pris le temps de répondre à l'homme! J'apprécie beaucoup! –

Questions connexes