Uitable viewcell detailTextLabel not showing up

à l'Aide d'un UITableView et son UITableViewCell(s) à Swift. J'ai un problème en montrant l' detailTextLabel champ UITableViewCell.

j'ai déjà trouvé ces deux messages utiles, mais je n'ai pas pu obtenir une solution entièrement fonctionnelle: swift detailTextLabel ne s'affiche pas comment configurer Uitable Viewcellstylesubtitle et dequeueReusableCell dans Swift?

voici le code que j'utilise, pertinent à ma question:

override func viewDidLoad() {
    super.viewDidLoad()

………….
    theTableView = UITableView(frame: tmpFrame)
………….
    theTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "reuseIdentifier")
    theTableView.dataSource = self
    theTableView.delegate = self
    self.view.addSubview(theTableView)
}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
    cell.backgroundColor = UIColor.clearColor()
    cell.textLabel?.text = "THE-TEXT-LABEL"
    cell.detailTextLabel?.text = "KIJILO" // This does not show up.
    return cell
}

quand j'essaie d'utiliser detailTextLabel champ UITableViewCell, il ne s'affiche pas. Chercher sur le net, je comprends que je dois utiliser le style approprié(UITableViewCellStyle) pour la cellule, mais je ne vois pas comment intégrer ce changement dans mon code. Les exemples que j'ai vus sont basés sur subclassing UITableViewCell et je suppose que je n'ai pas besoin de sous-classe UITableViewCell seulement pour utiliser le detailTextLabel champ. S'il vous plaît dites-moi si je me trompe.

j'ai aussi essayé quelques choses des postes mentionnés ci-dessus, mais rien ne fonctionne comme je vouloir.

9
demandé sur Community 2015-12-05 06:59:55

1 réponses

Vous avez enregistré le UITableViewCell

theTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "reuseIdentifier")

Cela signifie que lorsque vous appelez

tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)

un sera créé automatiquement pour vous en utilisant le style Uitable Viewcellstyledefault.

parce que vous voulez un style personnalisé, vous devez faire quelques choses:

Supprimer

theTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "reuseIdentifier")

Remplacer

var cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)

, avec

var cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier")
if cell == nil {
    cell = UITableViewCell(style: .Value1, reuseIdentifier: "reuseIdentifier")
}

ce qui se passe ici est dequeueReusableCellWithIdentifier renvoie zéro s'il ne peut pas détruire une cellule. Vous pouvez alors générer votre propre cellule en fournissant le style spécifié.

Note: J'ai écrit sans Xcode et je suis nouveau chez Swift donc je m'excuse si ça ne se compile pas.

24
répondu Patrick 2015-12-05 04:22:58