Swift: la Création d'un bouton qui appelle une méthode d'un autre class1
J'ai 2 classes, la première classe est nommée "magasin" où j'ai créer un bouton qui appelle une méthode: "storeSelected" situé dans la deuxième classe avec le nom ExploreViewController
.
La méthode d'impression de "fait" et de me prendre un autre point de vue contrôleur.
Sans la séquence "fait" est imprimé, mais lors de la mise de la séquence de code de l'application se bloque.
L'erreur est:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<Glam.ExploreViewController: 0x14ed3be20>) has no segue with identifier 'ok''
.........
//ExploreViewController Class
let _sharedMonitor: ExploreViewController = { ExploreViewController() }()
class ExploreViewController: UIViewController, UIScrollViewDelegate {
class func sharedMonitor() -> ExploreViewController {
return _sharedMonitor
}
func storeSelected(sender: UIButton) {
println("done") //it entered here and "done" is printed
self.performSegueWithIdentifier("ok", sender: self) //here is the problem
}
}
//another class named "Store"
//button is created
let monitor = ExploreViewController.sharedMonitor()
btn.addTarget(monitor, action: Selector("storeSelected:"), forControlEvents: UIControlEvents.TouchUpInside)
Pensez-vous vraiment avoir un manuel d'enchaîner avec l'identifiant "ok" lié à votre
Oui je l'ai, et il fonctionne très bien lorsque j'ai mis la séquence dans le viewdidload par exemple. @Wezly
Et est-il une raison particulière pour avoir le bouton de cas traités dans le
Magasin de classe est une classe de type UIView, je peux mettre segue dans le code? @Wezly
Ah, je ne savais pas que. vous devez gérer les enchaînements dans le visible-Vue-Contrôleur, je suppose que votre
ExploreViewController
?Oui je l'ai, et il fonctionne très bien lorsque j'ai mis la séquence dans le viewdidload par exemple. @Wezly
Et est-il une raison particulière pour avoir le bouton de cas traités dans le
ExploreViewController
? - Je voudrais juste faire de la Store
et ajouter un deuxième manuel de transition de la Store
à l'endroit où vous voulez aller.Magasin de classe est une classe de type UIView, je peux mettre segue dans le code? @Wezly
Ah, je ne savais pas que. vous devez gérer les enchaînements dans le visible-Vue-Contrôleur, je suppose que votre
Store
objet est à l'intérieur d'un quelque part?
OriginalL'auteur Omar Kayali | 2015-04-13
Vous devez vous connecter pour publier un commentaire.
En supposant que vous avez une vue contrôleur de l'endroit où vous créez le
Store
objet, vous devez passer à l'action de bouton de retour de ce point de vue contrôleur et ajouter une séquence à partir pour la destination de votre choix.Meilleure pratique consiste à utiliser un protocole que les délégués de l'action sur le bouton retour jusqu'à la viewController qu'il est contenu en tant que ci-dessous.
Magasin.swift
ViewController.swift
Ce code n'est pas testé, mais j'espère que vous aurez une idée de votre
Store
objet délégués appuyez sur le bouton l'activité de son contenantViewController
et puis le ViewController effectue la séquence que vous avez attaché à elle dans le Storyboard.Une autre voie pourrait être de passer d'une fermeture à partir de la vue principale du contrôleur à la vue magasin, mais vous avez encore besoin de l'action de la séquence à partir de la vue du contrôleur, par conséquent, probablement encore avoir besoin de passer une référence.
Incroyable, je vous remercie!, les gens n'oubliez pas: store.delegate = self
Ce qui peut être la raison pour laquelle les buttonPress' méthode n'est pas appelée?
OriginalL'auteur Wez