Le texte de détail (sous-titre) n'apparaît pas. Les données sont disponibles, cependant, car lorsqu'un appel println () est ajouté, il imprime facultatif ("data") sur la console avec les données attendues. Dans le storyboard, UITableViewController est défini sur la classe appropriée, le style de cellule de la vue Tableau est défini sur "Sous-titre" et l'identificateur de réutilisation est défini sur "cellule". Comment puis-je obtenir les informations de sous-titres à afficher?
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
dispatch_async(dispatch_get_main_queue(), { () -> Void in
cell.textLabel.text = self.myArray[indexPath.row]["title"] as? String
cell.detailTextLabel?.text = self.myArray[indexPath.row]["subtitle"] as? String
println(self.myArray[indexPath.row]["subtitle"] as? String)
// The expected data appear in the console, but not in the iOS simulator's table view cell.
})
return cell
}
Si vous souhaitez toujours utiliser la cellule prototype de votre storyboard, sélectionnez le style UITableViewcell comme sous-titre. ça va marcher.
Si vous le faites par programme sans cellules dans le constructeur d'interface, ce code fonctionne comme un charme dans Swift 2.0+
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
yourTableView.delegate = self
yourTableView.dataSource = self
yourTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "subtitleCell")
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return yourTableViewArray.count
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell: UITableViewCell = yourTableView.dequeueReusableCellWithIdentifier("subtitleCell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = "the text you want on main title"
cell.detailTextLabel?.text = "the text you want on subtitle"
return cell
}
Si vous définissez le texte sur nil quelque part lorsque vous essayez de le définir sur une valeur non nulle, la vue contenant le texte sera manquante. Cela a été introduit dans iOS8. Essayez plutôt de définir un caractère vide @" "
.
Voir ceci: Les sous-titres de UITableViewCell ne seront pas mis à jour
Pour ce que ça vaut: j'ai eu le problème du détail n'apparaissant pas. C'était parce que j'avais enregistré la cellule tableView, ce que je n'aurais pas dû faire car le prototype de la cellule a été défini directement dans le storyboard.