Esempio
Personalizzare un UITableViewCell
può consentire interfacce molto potenti, dinamiche e reattive. Con un’ampia personalizzazione e in combinazione con altre tecniche si possono fare cose come: aggiornare specifiche proprietà o elementi dell’interfaccia quando cambiano, animare o disegnare cose nella cella, caricare in modo efficiente video mentre l’utente scorre, o anche visualizzare immagini mentre vengono scaricate da una rete. Le possibilità qui sono quasi infinite. Qui sotto c’è un semplice esempio di come potrebbe essere una cella personalizzata.
Questa sezione copre le basi, e si spera che venga ampliata per dettagliare processi più complessi come quelli descritti sopra.
Creazione della cella personalizzata
Primo, create una nuova sottoclasse di UITableViewCell
(create una nuova classe Cocoa Touch in Xcode e impostate UITableViewCell
come superclasse). Di seguito è riportato come potrebbe apparire il vostro codice dopo la sottoclasse.
Swift
class CustomTableViewCell: UITableViewCell { static var identifier: String { return NSStringFromClass(self) } var customLabel: UILabel! override func awakeFromNib() { super.awakeFromNib() // Initialization code customLabel = UILabel(frame: CGRect(x: 0, y: 0, width: contentView.frame.width, height: contentView.frame.height)) customLabel.textAlignment = .center contentView.addSubview(customLabel) }}
Opzionalmente, controllate ‘Crea anche un file XIB’ quando create il vostro nuovo file da personalizzare usando Interface Builder. Nel caso in cui lo facciate collegate customLabel
come un @IBOutlet
In un UIViewController
contenente il tableView
, registra la nuova classe della cella personalizzata (vedi sotto). Nota, questo è necessario solo se non si progetta la cella con uno Storyboard nell’interfaccia della vista tabella.
Swift
override func viewDidLoad() { super.viewDidLoad() // Register Cell Class tableView.register(CustomTableViewCell.self, forCellReuseIdentifier: CustomTableViewCell.identifier)}
Se hai scelto di usare un file XIB, registerNib
invece:
Swift
// Register NibtableView.register(UINib(nibName: CustomTableViewCell.identifier, bundle: nil), forCellReuseIdentifier: CustomTableViewCell.identifier)
Ora che il vostro tableView
sa della vostra cella personalizzata, potete fare il dequeue in cellForRowAtIndexPath
:
Swift
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { // Load the CustomTableViewCell. Make sure the identifier supplied here matches the one from your cell let cell: CustomTableViewCell = tableView.dequeueReusableCellWithIdentifier(CustomTableViewCell.identifier) as! CustomTableViewCell // This is where the magic happens - setting a custom property on your very own cell cell.customLabel.text = "My Custom Cell" return cell}