uitableviewcontroller uitableviewcell example custom swift uitableview cell accessorytype

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 }