Accéder à différents points de vue à l'intérieur d'un UITableViewCell par tag rapide
Je suis en train de faire une application pour iOS 8, l'utilisation de swift. Le but ici est de faire une sorte de flux d'actualités. Cette alimentation affiche les messages des utilisateurs, qui suit un schéma précis.
J'ai pensé à l'aide de la UITableView, où chaque cellule suit une mise en page personnalisée. Le problème apparaît lorsque j'essaie d'accéder à une étiquette de texte à l'intérieur. J'essaye d'y accéder par son étiquette, mais quand je le fais, l'ensemble de l'application se bloque. L'erreur signalée est "Swift dynamic cast failed"
, et je suis en utilisant le code suivant pour accéder à la vue:
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cellId: String = "cell"
var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellId) as UITableViewCell
if let ip = indexPath{
cell.textLabel.text = myData[ip.row] as String
var lbl = cell.contentView.viewWithTag(0) as UILabel
lbl.text = "ola"
}
return cell
}
Je fais quelque chose de mal? Merci à l'avance!
- Je ne peux pas voir le code où vous êtes réellement paramètre de la balise.
- J'ai déjà essayé d'utiliser d'autres valeurs pour les tags, mais toujours la même chose qui se passe
- Je vais le faire dans l'interface builder... Suis-je le fais mal?
- Thats pas bien. Vous pouvez définir votre étiquette de valeur de l'IB trop.
- Ne devrait-elle pas être
cell.viewWithTag(0)
au lieu decell.contentView.viewWithTag(0)
? - Vous utilisez n'est pas coutume cellule ici? Où voulez-vous ajouter votre étiquette de votre point de vue?
- Non, j'utilise de la cellule.contentView.viewWithTag(...) trop. Cela fonctionne bien.
- Pourquoi voulez-vous pour obtenir la vue de cette façon? Définir la
UILabel
comme une propriété. Et obtenir ce point de vue en disant quelque chose commecell.label
? Ce n'est pas la réponse, mais juste une meilleure approche de l'OMI. - Vous m'avez fait réfléchir à deux fois et vous avez raison.. je vais suivre cette approche
Vous devez vous connecter pour publier un commentaire.
je pense que le Problème est la Balise de 0. Toutes les Vues sont sur la valeur par défaut de 0. Donc, essayez un autre tag valeur.
Juste face à la même question. La solution a été de changer la balise à 10 et 20. J'ai utilisé 1 et 2 avant. Est ce que quelqu'un au courant de toute une gamme de balises est utilisé par le système?
Donc, mon "cellForRowAtIndexPath" pour un tableau avec une image et une étiquette par ligne ressemble à ceci maintenant: