J'ai une applications avec un contrôleur de navigation, lorsque l'utilisateur est dans une vue spécifique, Il peut toucher un scollview et je veux pousser le rootViewController. Donc, j'ai sous-classes uiscrollview, et dans la méthode "touchesBegan", je veux un pousser le rootviewcontroller, mais je n'ai pas accès au contrôleur de navigation! Comment je peux faire ça?push view when touchesBegan
Répondre
Dans votre sous-classe de UIScrollView créer deux variables d'instance:
id delegate;
SEL touchAction;
Ensuite, créez des méthodes:
-(void)setTarget:(id)target andAction:(SEL)action {
delegate = target;
touchAction = action;
}
-(void)callAction {
if (delegate && [delegate respondsToSelector:touchAction]) {
[delegate performSelector:touchAction];
}
}
Dans votre touchesBegan il suffit d'appeler cette méthode:
...
[self callAction];
...
Dans votre classe UIViewController méthode create:
-(void)myScrollViewTouchAction {
[self.navigationController pushViewController:myNewViewController animated:YES];
}
et enfin lors de la création par exemple de votre sous-classe UIScrollView, réglez la cible et l'action:
[myScrollView setTarget:self andAction:@selector(myScrollViewTouchAction)];
Les UIViewControllers ont la propriété "navigationController", il vous suffit donc d'accéder au contrôleur de vue de la vue en cours de modification.
Cependant, j'ai trouvé que dans le développement de l'iphone, sauter par des cerceaux comme ça est un signe de faiblesse dans le développement. Par exemple, pourquoi une vue doit indiquer à une vue CONTROLLER de faire quelque chose. Il devrait être l'inverse. Cela étant dit, UIViewController est une sous-classe de UIResponder, donc vous pouvez gérer les touches dans le contrôleur. Ensuite, vous pouvez simplement dire.
[myViewController.navigationController pushViewController: animé:]
- 1. UISplitViewController - Push Modal View
- 2. touchesBegan convertit en ccTouchesBegan?
- 3. implémenter touchesBegan pour UITextField
- 4. UIScrollView touchesBegan
- 5. iphone touchesbegan
- 6. touchesBegan question dans iphone sdk?
- 7. touchesBegan sur le ViewController
- 8. touchesBegan ne répond pas
- 9. vues modales et touchesBegan
- 10. Nouveau sur iPhone SDK: touchesBegan pas appelé
- 11. CASE WHEN ... INTO - Procédure stockée
- 12. Iphone Textview n'invoque pas TouchesBegan
- 13. Alternative à MySQL CASE/WHEN?
- 14. touchesBegan seulement dans UIView spécifique
- 15. SQL Server Case when syntax
- 16. Microsoft SQL: CASE WHEN vs ISNULL/NULLIF
- 17. Comment convertir ma requête CASE WHEN THEN?
- 18. Étant donné l'exemple -When-Then avec NUnit
- 19. SQL: instruction case-when avec "exists"
- 20. UIView touchesbegan ne répond pas pendant l'animation
- 21. Comment appeler TouchesBegan, TouchesMoved, TouchedEnded par programme
- 22. Dispatch Event When Listener Is Added - ActionScript3
- 23. TouchesBegan et TouchesEnded avec le numéro Multitouch
- 24. handle touchesBegan méthode pour UITextField dans UIScrollView
- 25. push notification
- 26. Je ne peux pas voir la propriété UIImageView inside touchesBegan
- 27. Group View View avec le fichier Controller
- 28. iPad Modal View pivote parentViewController View
- 29. UITabBar view
- 30. liste chaînée push front
Je fais tout ces choses, mais quand cette ligne est exécutée : [delegate performSelector: touchAction], la méthode myScrollViewTouchAction n'est pas appelée, dans le nom initwithnib de mon contrôleur de vue, je crée une instance de la sous-classe uiscrollview et j'appelle setTarget .... – alex
Le problème est que lorsque j'ai appelé setTarget et quand touchesBegan s'appelle, je t n'est pas le même objet, donc le délégué n'est pas défini lorsque touchesBegan est appelé ... – alex
puis définissez la cible et l'action pour le nouvel objet. – jamapag