2008-12-15 10 views
3

J'utilise la balise d'interface builder pour accéder à certains UILabels que j'instancie dans un fichier xib. Comme c'est un UITextViewCell je veux éviter les appels de méthode superflus, mais je veux le faire aussi bien. Ainsi, quand je fais:Utilisation des balises Interface Builder

UILabel *label = (UILabel *)[cell viewWithTag:1]; 

Je me demande si je devrais l'envelopper comme ceci:

if([[cell viewWithTag:1] isKindOfClass [UITableViewCell class]]) { 
    UILabel *label = (UILabel *)[cell viewWithTag:1]; 
} 

Toute discussion sur ce serait apprécié.

Merci

Répondre

3

Sauf si vous avez beaucoup d'objets différents de différentes classes qui ont subviews tagged « 1 » alors ce n'est pas nécessaire.

Si vous avez un tas d'objets différents (cellules, disons) qui ont des classes différentes, mais tous ont des sous-vues avec un tag, je reconsidérer votre schéma de marquage. Peut-être 101, 201, & 301, etc.

6

Comme en août, je suggérerais de rendre vos numéros de marques uniques dans cette branche de votre hiérarchie de vue.

Je suggère également que vous définissiez un enum pour énumérer vos valeurs de variable possibles afin que votre méthode viewWithTag: devienne plus lisible.

1

Oui, je trouve la méthode Enum fonctionne bien, ou juste faire #define foo 1, bar #define 2, etc.

1

Vous définissez des balises dans le générateur d'interface à l'aide de commande 1 dans l'éditeur d'attributs et recherchez ' tag 'sous le paramètre d'arrière-plan.

Questions connexes