Swift tableView cellule défini type d'accessoire
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet
var tableView: UITableView
var items: String[] = ["We", "Heart", "Swift"]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "myCell")
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return self.items.count;
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("myCell") as UITableViewCell
cell.textLabel.text = self.items[indexPath.row]
cell.accessoryType = UITableViewCellAccessoryType.DetailDisclosureButton
cell.selectionStyle = UITableViewCellSelectionStyle.Blue
tableView.separatorStyle = UITableViewCellSeparatorStyle.None
return cell
}
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
}
}
Mon problème est que le accessoryType et la selectionStyle n'obtenez pas changé.
La tableView.separatorStyle est changé ainsi que de la cellule.textlabel.texte.
Comment puis-je régler ce problème?
Remarque:
tableView:cellForRowAtIndexPath:
n'est probablement pas le bon endroit pour le réglage de tableView.separatorStyle
. Je voudrais déplacer la ligne de code à viewWillAppear
, ou même essayer de le placer à l'interface builder (je n'ai pas accès à la dernière Xcode, donc je ne peux pas lui donner un coup d'essayer).OriginalL'auteur user3748930 | 2014-06-17
Vous devez vous connecter pour publier un commentaire.
Comme pour le
accessoryType
, il devrait fonctionner correctement tant que vous n'avez pas le changer plus tard à un autre endroit. Assurez-vous que la largeur du tableau est correct, sinon l'accessoire points de vue pourraient être à l'écran.Noter qu'il n'est pas une bonne solution pour régler
separatorStyle
de la table à chaque fois que la cellule est demandé, au lieu de le faire une fois lors de latableView
est chargé: àviewDidLoad
.Vous pouvez choisir n'importe quelle option disponible à la
UITableViewCellAccessoryType
enum. Si vous voulez un accessoire sur mesure vue, le chef de la propriétéaccessoryView
deUITableViewCell
.Dois-je créer une classe pour la cellule?
- je faire dans ce code, mais le AccessoryType ne change pas
c'est plus une solution générale plutôt que la mienne, en va de même pour un "cliquables" accessoire de vue: pour une norme de type
DetailDisclosureButton
vous auriez besoin pour mettre en œuvre la méthode du délégué- tableView:accessoryButtonTappedForRowWithIndexPath:
, pour personnalisé accessoire points de vue (ceux que vous initialisez et ajouter vous-même), vous devriez utiliser des outils appropriés en fonction du type de contrôle.OriginalL'auteur A-Live
Je n'ai pas eu la chance de le placer à la
cellForRowAtIndexPath
méthode, de le déplacer àwillDisplayCell
correction du problème avec le il pas.OriginalL'auteur Derek Hewitt
Je voudrais partager mon expérience sur ce sujet, j'ai eu le même problème,
cell.accessoryType = IUTableViewCellAccessoryType.Checkmark
Et j'ai remarqué que mon tableview n'ai pas de contraintes, j'ai donc ajouté manquant contraintes puis il a travaillé pour moi
OriginalL'auteur Seelass