Mein Problem ist, dass der AccessoryType und der selectionStyle nicht geändert werden. Der tableView.separatorStyle wird ebenso wie der cell.textlabel.text geändert. Wie kann ich das beheben?Swift tableView Zellensatz Zubehörtyp
Antwort
UITableViewCellSelectionStyleBlue
Die Zelle verfügt über eine Hintergrundfarbe Standard wenn ausgewählt.
In iOS 7 ist die Auswahlfarbe nicht mehr blau. Verwenden Sie stattdessen UITableViewCellSelectionStyleDefault.
Wie für die accessoryType
, sollte es gut funktionieren, solange Sie es später woanders nicht ändern. Stellen Sie sicher, dass die Tabellenbreite korrekt ist, andernfalls können Zubehöransichten nicht angezeigt werden.
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.selectionStyle = UITableViewCellSelectionStyle.Blue
/*
enum UITableViewCellAccessoryType : Int {
case None // don't show any accessory view
case DisclosureIndicator // regular chevron. doesn't track
case DetailDisclosureButton // info button w/ chevron. tracks
case Checkmark // checkmark. doesn't track
case DetailButton // info button. tracks
}
*/
// Standard options
cell.accessoryType = UITableViewCellAccessoryType.None
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
cell.accessoryType = UITableViewCellAccessoryType.DetailDisclosureButton
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
cell.accessoryType = UITableViewCellAccessoryType.DetailButton
// Custom view options
cell.accessoryType = UITableViewCellAccessoryType.None
cell.accessoryView = UIView(frame: CGRectMake(0, 0, 20, 20))
cell.accessoryView.backgroundColor = UIColor.blueColor()
return cell
}
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
}
}
Beachten Sie, dass es keine gute Lösung ist es einmal gesetzt separatorStyle
der Tabelle jedes Mal, wenn die Zelle angefordert wird, anstatt tun, wenn die tableView
geladen wird: bei viewDidLoad
.
Ich möchte den Zubehörtyp ändern. Wie kann ich es ändern? (und wo?) – user3748930
Sie können jede Option auswählen, die in der Enumeration 'UITableViewCellAccessoryType' verfügbar ist. Wenn Sie eine benutzerdefinierte Zubehöransicht wünschen, wählen Sie die Eigenschaft 'accessoryView' von' UITableViewCell' aus. –
Muss ich eine Klasse für die Zelle erstellen? – user3748930
Ich mag würde meine Erfahrung darüber teilen, ich hatte das gleiche Problem, cell.accessoryType = IUTableViewCellAccessoryType.Checkmark
Und ich merkte, dass mein Tableview nicht Zwänge hatte, so dass ich hinzugefügt Constraints dann funktionierte es für mich fehlt
I didn‘ Ich habe Glück, wenn ich es in der cellForRowAtIndexPath
Methode einstelle und es auf willDisplayCell
verschiebe, behob das Problem damit nicht angezeigt.
Hinweis: 'tableView: cellForRowAtIndexPath:' ist wahrscheinlich nicht der richtige Ort für 'tableView.separatorStyle'. Ich würde diese Codezeile nach 'viewWillAppear' verschieben oder es sogar im Interface Builder einstellen (ich habe keinen Zugriff auf den neuesten Xcode, also kann ich es nicht schnell versuchen). – dasblinkenlight