Je ne sais pas lequel utiliser? cell.contentView me donne parfois des erreurs bizarres comme [uiview settext] ... ?? J'essayais de mettre un TextUtil à un UILabel *SDK iPhone: [cell.contentView viewWithTag: 1] ou [cell viewWithTag: 1]?
Répondre
Celui à utiliser dépend de la façon dont vous avez créé la cellule en premier lieu. Si vous avez ajouté votre UILabel en tant que sous-vue de contentView (par exemple, [cell.contentView addSubview:myLabel]
), vous utiliserez [cell.contentView viewWithTag:1]
pour le récupérer (en supposant que l'étiquette ait effectivement une étiquette de 1).
Cependant, je vous préviens d'utiliser -viewWithTag:
en premier lieu. C'est assez utile pour piquer des choses, mais ce n'est pas très fiable (parce que si deux vues ont le même tag, vous n'en récupérerez qu'une) et ce n'est pas très efficace (il faut traverser les sous-vues à chaque fois que vous utilise le). Je recommanderais plutôt de créer une sous-classe UITableViewCell
qui a des propriétés pour vos vues personnalisées, de sorte que vous pouvez y accéder directement.
+1 pour la recommandation pour les sous-vues en tant que ivars – Tim
merci pour votre réponse rapide. J'aimerais en savoir plus sur votre suggestion alternative. Pourriez-vous me donner plus d'indices à ce sujet? Comme un petit échantillon de code serait très très utile pour moi en ce moment. Merci! – RoundOutTooSoon
Vous avez utilisé des ivars avec d'autres choses, non? Créez simplement une sous-classe de UITableViewCell et ajoutez vos ivars à cela. Je recommande également que cette sous-classe configure ses sous-vues dans sa méthode -initWithStyle: reuseIdentifier:. Vous devez également déclarer @properties pour ces ivars afin que votre contrôleur puisse y accéder. Lors de la création de votre cellule dans -tableView: cellForRowAtIndexPath: vous pouvez simplement convertir l'appel [tableView dequeueReusableCellWithIdentifier: @ "foo"] en (YourCellSubclass *). –