uitableviewcell - Tipo de accesorio del juego de celdas Swift tableView
uitableview swift 4 example (4)
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)!")
}
}
Mi problema es que el tipo de accesorio y el estilo de selección no se modifican. El tableView.separatorStyle se modifica, así como el cell.textlabel.text. ¿Cómo puedo arreglar eso?
UITableViewCell.SelectionStyle.blue
La celda tiene un color de fondo predeterminado cuando se selecciona.
En iOS 7, el color de selección ya no es azul . Utilice UITableViewCell.SelectionStyle.default en su lugar.
En cuanto al tipo de accessoryType
, debería funcionar bien siempre y cuando no lo cambie más tarde en otro lugar. Asegúrese de que el ancho de la tabla sea correcto, de lo contrario las vistas de accesorios podrían estar fuera de la pantalla.
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 = UITableView.CellSelectionStyle.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 = UITableViewCell.AccessoryType.none
cell.accessoryType = UITableViewCell.AccessoryType.disclosureIndicator
cell.accessoryType = UITableViewCell.AccessoryType.detailDisclosureButton
cell.accessoryType = UITableViewCell.AccessoryType.checkmark
cell.accessoryType = UITableViewCell.AccessoryType.detailButton
// Custom view options
cell.accessoryType = UITableViewCell.AccessoryType.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)!")
}
}
Tenga en cuenta que no es una buena solución para establecer separatorStyle
de la tabla cada vez que se solicita la celda, en lugar de hacerlo una vez que se tableView
el tableView
: en viewDidLoad
.
A continuación, estableceremos su accesorioView como un icono denominado "sentIcon". ¡¡¡Por si acaso!!!
let sentImage = UIImage(named: "sentIcon")
let sentImageView = UIImageView(image: sentImage)
sentImageView.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
sentImageView.tintColor = .lightGray
cell.accessoryView = sentImageView
Me gustaría compartir mi experiencia sobre esto, tuve el mismo problema, cell.accessoryType = IUTableViewCellAccessoryType.Checkmark
Y noté que mi vista de tabla no tenía restricciones, así que agregué restricciones que faltaban y luego me funcionó.
No tuve la suerte de configurarlo en el método cellForRowAtIndexPath
, moverlo a willDisplayCell
solucionó el problema y no aparecía.
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
cell.accessoryType = .DisclosureIndicator
}