iPhone - comment utiliser la table de montage avec personnalisé UITableView cellules et CellWithIdentifier
Je suis en train de faire usage de la nouvelle Storyboard designer et la facilité de dessin UITableView cellules au lieu de par programme "création" de chaque ligne.
Un bon exemple d'une cellule standard est lié ici à un débordement de pile:
iPhone - dequeueReusableCellWithIdentifier utilisation
Au lieu de l'approche liée à l'utilisation de "[cellule textLabel]" je veux utiliser mes propres étiquettes, des boutons et des images sur le dessus de chaque rangée.
Donc j'ai créé plusieurs prototypes de cellules/lignes et des identifiants assignés à eux (à l'aide de Storyboard).
Maintenant: quel est le meilleur moyen d'accéder à chaque ligne du "sur mesure" contrôle/d'étiquettes? J'ai essayé de chercher pour y accéder par l'ID, mais ne trouve rien.
Ma pensée était, il doit travailler le long de ces lignes:
[[[cell subviews] getObjectByID:@"labelTime"] setText:@"Whatever"];
Est mon attente de l'Api complètement erronées ou n'ai-je pas juste trouver la bonne API, encore?
Des idées ou des recommandations?
OriginalL'auteur Peter Branforn | 2012-01-25
Vous devez vous connecter pour publier un commentaire.
Pour chaque nouvelle coutume UITableViewCell que vous créez dans le storyboard, vous voulez créer un nouveau fichier de classe qui implémente UITableViewCell d'un lien. Assurez-vous de cartographier l'ensemble des contrôles au sein de votre nouvelle cellule que vous avez définies dans la table de montage séquentiel pour des propriétés d'une instance. Ensuite, vous aurez juste à utiliser avec la file d'attente comme d'habitude:
Oui, je viens de réaliser que cet usage moi-même une semaine ou deux il ya, il est très gentil et rapide.
Parfait .. Merci pour l'idée
OriginalL'auteur mservidio
Il y a deux façons que vous pouvez obtenir pour votre personnalisé des sous-vues. Le plus simple est d'utiliser les balises. Chaque point de vue a un
tag
propriété qui est un entier. Vous pouvez définir la balise dans la plume, et de définir ou d'obtenir dans le code. Vous pouvez rechercher une arborescence pour une vue avec un tag donné par l'envoi d'viewWithTag:
à la racine de l'arbre. Ainsi, par exemple, vous pouvez donner à votrelabelTime
affichage de la balise 57, et dans votre code, vous trouverez les afficher comme ceci:L'inconvénient de l'utilisation de balises, c'est que vous devez conserver les numéros d'étiquette de synchronisation entre votre plume et votre code. Si ils sortent de la synchronisation, soit mal vue ou vous aurez un montant de néant (et depuis, vous pouvez envoyer des messages à zéro, le système ne vous donnera pas une erreur quand ça arrive). Encore, les balises sont tellement pratique qu'il est assez commun pour les utiliser comme ceci.
L'autre façon est de créer une sous-classe personnalisée de
UITableViewCell
avec unIBOutlet
propriété pour chaque sous-vue. Vous pouvez raccorder les sorties à la sous-vues dans la plume, et l'accès à la sous-vues via les propriétés dans votre code:Cela implique la rédaction d'un beaucoup plus passe-partout que l'aide de balises, mais il a l'avantage que vous obtiendrez des avertissements ou des erreurs (que ce soit au moment de la compilation ou lorsque vous essayez de charger la plume) si votre plume et votre code de sortir de la synchronisation.
OriginalL'auteur rob mayoff
Ne pas être un doofus comme j'étais. 🙂
Assurez-vous de définir le Identificateur valeur dans la Attributs de l'Inspecteur de de la cellule personnalisé. Réglage de la Restauration ID de la cellule personnalisé dans le Identité de l'Inspecteur est pas la voie à suivre, et c'est exactement ce que j'ai fait. Les principaux facepalm pour moi.
OriginalL'auteur BigSauce
Pour plus de détails de mise en œuvre de la façon de le faire, en utilisant les méthodes décrites par mservidio et rob, consultez la section "Conception de Notre propre Prototype de Cellules" dans ce tutoriel.
OriginalL'auteur Myxtic