Délégué à Swift-langue
J'ai deux contrôleurs et j'ai besoin de faire l'appel de la fonction le premier contrôleur de deuxième contrôleur:
Dans la deuxième manette, j'ai créé protocole et init délégué de classe:
protocol testProtocol {
func testDelegate() //this function the first controllers
}
class SecondViewController: UIViewController {
var delegate: testProtocol?
....
}
@IBAction func testDelegateClicked(sender : AnyObject) {
delegate?.testDelegate()
}
Premier Contrôleur
class ViewController: UIViewController, testProtocol {
var secondController: SecondViewController = SecondViewController()
override func viewDidLoad() {
super.viewDidLoad()
secondController.delegate = self
}
func testDelegate() {
println("Hello delegate")
}</pre>
Mais la fonction n'est pas appelé
Comment êtes-vous de l'affichage de
dans le deuxième contrôleur de fonctions standard (ViewDidLoad et didReceiveMemoryWarning) et gestionnaire de bouton que j'ai montré
Aussi assurez-vous d'obtenir une référence faible pour le délégué. Propriétés de swift sont forts par défaut
secondViewController
?dans le deuxième contrôleur de fonctions standard (ViewDidLoad et didReceiveMemoryWarning) et gestionnaire de bouton que j'ai montré
Aussi assurez-vous d'obtenir une référence faible pour le délégué. Propriétés de swift sont forts par défaut
OriginalL'auteur Lola | 2014-06-05
Vous devez vous connecter pour publier un commentaire.
Je vais faire une hypothèse que vous utilisez des story-boards. Si je suis correct, alors votre problème est que votre
secondController
, créé dans votre Premier Contrôleur, n'est pas celui que vous présentez. Vous aurez besoin de mettresecondController
dans votreprepareForSegue:
Deuxième Contrôleur
Inchangé
Premier Contrôleur
jetez un oeil à mon commentaire ajouté. Vous souhaitez ajouter la
?
à lasecondController
variable. Si vous faites cela, vous aurez besoin d'avoir aussi l'as?
Si nous n'utilisons pas de storyboard Comment mettre en Œuvre @Firo
vous ne créez votre nouveau-vue-contrôleur (
var controller = SecondController()
), l'ensemble de délégué (controller.delegate = self
), puis enfin le présenter (self.navigationController.pushViewController(controller)
)... si vous rencontrez toujours des problèmes faites le moi savoir!OriginalL'auteur Firo