8
votes

Commutation des contrôleurs à l'aide de gestes de balayage

ok alors voici le problème que je rencontre:

Je tente de passer d'un ViewController que j'ai nommé menuViewController qui contient mon menu (évidemment). J'ai un ViewController distinct nommé ViewController qui contient mon MapView . Je voudrais pouvoir doubler le doigt glisser gauche de mon menuViewController sur mon MapView .

Je ne suis pas vraiment sûr où commencer.

Aussi, j'utilise des fichiers XIB et non le storyboard. Exécution d'iOS 6.


0 commentaires

6 Réponses :


0
votes

Tout d'abord, vous ne pouvez pas utiliser le mécanisme de navigation intégré.

Vous devrez ajouter la vue de la "ViewController" à la vue de "MenuViewController" et je vous recommande d'ajouter 'ViewController' en tant que contrôleur d'affichage enfant à la "MenuViewController".

Après cela, réglez le cadre du côté "ViewController" de l'écran et lorsque vous balayez ou faites votre geste, il suffit de l'animer à l'écran.


0 commentaires

13
votes
UISwipeGestureRecognizer *swipeLeftGesture=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
[self.view addGestureRecognizer:swipeLeftGesture];
swipeLeftGesture.direction=UISwipeGestureRecognizerDirectionLeft;

-(void)handleSwipeGesture:(UIGestureRecognizer *) sender
{
    NSUInteger touches = sender.numberOfTouches;
    if (touches == 2)
    {
        if (sender.state == UIGestureRecognizerStateEnded)
        { 
            //Add view controller here    
        }
    }  
}

4 commentaires

Et cela irait dans ma vue de vie correcte? Qu'est-ce qui se passe dans mon fichier d'en-tête? Aussi, comment puis-je "ajouter un contrôleur d'affichage ici"?


Mettez le code de geste de balayage (3 premières lignes de mon ANS) dans la vue ViewDidLoad. Rien dans .h fichier. Allouez votre contrôleur d'affichage et appuyez simplement en avant, ajoutez-le ou présentez-le dans la méthode PoignéeWipegesture.


C'est comme ça que j'ai ajouté mon point de vue de cette ligne et ça ne fonctionne pas: ViewController * MapView = [[ViewController ALLOC] initwithnibname: @ "ViewController" Bundle: [Nsbundle MainBundle]]; [NavigationController PushviewController: MapView Animated: Oui];


Où allouez-vous un contrôleur de navigation? Il suffit d'expliquer comment vous ajoutez les contrôleurs d'affichage dessus.



0
votes

Cela ressemble à un moment idéal pour utiliser Uigesurerecognizer ou, plus précisément, Uiswipegesturerecognizer


0 commentaires

4
votes

Une fois passez à travers cela,

 -(void)handleleftSwipe:(UISwipeGestureRecognizer *)recognizer{
//Do ur code for Push/pop..
  }
-(void)handlerightSwipe:(UISwipeGestureRecognizer *)recognizer{
 //Do ur code for Push/pop..
  }


0 commentaires

1
votes

Essayez ceci ...

dans .h fichier xxx

in .m fichier xxx


3 commentaires

Ah, sans bon bon monsieur. Je l'ai chargé dans mon fichier d'en-tête et de mise en œuvre. Je ne sais pas si je le fais correctement, mais j'utilise réellement l'API Google Maps. Est-ce que la MAPView ne va-t-elle pas aller directement dans la visiteuse par défaut? J'apprécie cependant vos efforts.


Remplacez votre code à la ligne [autoavigationController PushViewController: MapViewOBJ Animation: Oui];


Je suis désolé, mais je ne suis pas suivi. Que dois-je remplacer cette section du code?



1
votes

C'est ce que j'ai codé pour vous.

//add gesture recogniser to your view
[self addSwipegestureToView:self.view];


- (void) addSwipegestureToView : (UIView *) view{
    UISwipeGestureRecognizer *_swipegestureRecogniser = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesturePerformed)];
    _swipegestureRecogniser.numberOfTouchesRequired = 2;
    [_swipegestureRecogniser setDirection:UISwipeGestureRecognizerDirectionLeft];
    [view addGestureRecognizer:_swipegestureRecogniser];
}

- (void) swipeGesturePerformed{
    SecondViewController *object = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:object animated:YES];
}


0 commentaires