2010-09-11 9 views
0

J'ai créé trois UIImageViews. J'ai ensuite ajouté un UITextField à chaque image en tant que sous-vue.Récupération de la référence à superview à partir de UITextField?

Lorsque l'utilisateur clique sur le champ de texte, je souhaite capturer le champ de texte UIImageView auquel il appartient. J'essaie le code suivant:

-(void)textFieldDidBeginEditing : (UITextField *)textField { 


textField = retainedObject; 

MyPicture *capture = nil; 

for (UIImageView *oneView in retainedObject.superview) { 

    if ([oneView isMemberOfClass:[myPicture class]]) 
    capture = (UIImageView *)oneView; 

} 

Cependant, je reçois une erreur qui UIView peut ne pas répondre à compter par énumération. Il semble que l'aperçu du champ de texte est UIView plutôt que UIImageView peut-être? Quelqu'un peut-il aider à résoudre cela?

Merci,

Martin

Répondre

1

A UIView « s superView est supposé être un UIView. Cependant, vous pouvez toujours le transformer en UIImageView, et appeler les méthodes UIImageView dessus, mais assurez-vous que ce sera toujours un UIImageView sans exception, sinon il va planter.

Source: Mes propres applications;)

+0

Merci - mais je suis confus par ce que vous entendez par cast vers ImageView. L'aperçu de l'UITextField est déjà un UIImageView? – GuybrushThreepwood

+0

Ajoutez simplement 'UIImageView * superImageView = (UIImageView *) [visionneuse retainObject];', et vous pouvez ensuite appeler facilement toutes les fonctions 'UIImageView' de l'objet. – jrtc27

+0

Merci encore - appréciez votre aide. Je reçois maintenant une erreur que UITextField (ici retainObject) ne peut pas répondre à superView? – GuybrushThreepwood

Questions connexes