2013-06-18 1 views
-1

Donc, j'ai une vue avec un UIScrollView. Pour ce ScrollView, j'ai ajouté une sous-vue comme ceci:Communication entre le contrôleur de sous-vue et le contrôleur Superview dans un ScrollView

ChildViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"1"]; 
    [self.scrollView addSubview:controller.view]; 

Cela fonctionne très bien. Dans ce contrôleur enfant, j'ai défini un bouton avec cible self:

[button addTarget:self action:@selector(actionButton:) forControlEvents:UIControlEventTouchDown]; 

Si je clique sur le bouton, le programme se casse. Mais si je mets la cible à zéro, le contrôleur parent est appelé en tant que premier répondeur. Toutefois, je souhaite que l'action soit appelée dans le contrôleur enfant. Je ne suis pas capable de communiquer depuis le parent vers la sous-vue ou d'appeler une action du parent/aperçu.

Qu'est-ce que je fais mal? Comment puis-je faire fonctionner ça?

+3

"Si je clique sur le bouton, le programme se casse." Comment ça se casse? Modifiez votre message pour inclure les messages qui apparaissent dans la console de débogage. –

+0

quelle est l'erreur que vous obtenez? ... vous avez une méthode appelée actionButton non? – Jatin

Répondre

0

Sans plus pour continuer, ma première supposition serait que le ChildViewController obtient désalloué et c'est pourquoi votre application se bloque lorsque vous appuyez sur le bouton.

donc une façon de résoudre ce pourrait être de maintenir une forte référence à votre ChildViewController comme:

@property (strong) ChildViewController *childViewController

alors vous faire:

self.childViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"1"]; 
[self.scrollView addSubview:self.childViewController.view]; 

Mais plus d'informations aiderait :)

Cheers Morten

+0

Vous avez raison, c'est tout! Tout est logique maintenant, l'action est maintenant appelée dans le contrôleur enfant. Merci beaucoup, tu as fait ma journée! :) – Szumi

+0

@schumi heureux je pourrais aider, la prochaine fois assurez-vous d'inclure des messages d'erreur :) – mbogh

Questions connexes