Sto cercando di creare una cella di visualizzazione tabella personalizzata da un pennino. Mi riferisco a questo articolo qui . Sto affrontando due problemi.
Ho creato un file .xib con un oggetto UITableViewCell trascinato su di esso. Ho creato una sottoclasse UITableViewCell
e l'ho impostata come classe della cella e Cell come identificatore riutilizzabile.
import UIKit
class CustomOneCell: UITableViewCell {
@IBOutlet weak var middleLabel: UILabel!
@IBOutlet weak var leftLabel: UILabel!
@IBOutlet weak var rightLabel: UILabel!
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
In UITableViewController ho questo codice,
import UIKit
class ViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate {
var items = ["Item 1", "Item2", "Item3", "Item4"]
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - UITableViewDataSource
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let identifier = "Cell"
var cell: CustomOneCell! = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
if cell == nil {
tableView.registerNib(UINib(nibName: "CustomCellOne", bundle: nil), forCellReuseIdentifier: identifier)
cell = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
}
return cell
}
}
Questo codice non rispetta errori, ma quando lo eseguo nel simulatore sembra così.
In UITableViewController nello storyboard non ho fatto nulla al cellulare. Identificatore vuoto e nessuna sottoclasse. Ho provato ad aggiungere la cella identificativo per il prototipo di cella e corse di nuovo ma ottengo lo stesso risultato.
Un altro errore che ho riscontrato è quando ho cercato di implementare il seguente metodo in UITableViewController.
override func tableView(tableView: UITableView!, willDisplayCell cell: CustomOneCell!, forRowAtIndexPath indexPath: NSIndexPath!) {
cell.middleLabel.text = items[indexPath.row]
cell.leftLabel.text = items[indexPath.row]
cell.rightLabel.text = items[indexPath.row]
}
Come mostrato nell'articolo che ho citato, ho cambiato la cell
forma del tipo di parametro UITableViewCell
in CustomOneCell
cui è la mia sottoclasse di UITableViewCell. Ma ricevo il seguente errore,
Metodo di sostituzione con il selettore 'tableView: willDisplayCell: forRowAtIndexPath:' ha un tipo incompatibile '(UITableView !, CustomOneCell !, NSIndexPath!) -> ()'
Qualcuno ha idea di come risolvere questi errori? Questi sembravano funzionare bene in Objective-C.
Grazie.
EDIT: Ho appena notato che se cambio l'orientamento del simulatore in orizzontale e lo cambio in verticale, appaiono le celle! Non riuscivo ancora a capire cosa stesse succedendo. Ho caricato un progetto Xcode qui dimostrando il problema se hai tempo per una rapida occhiata.