Я намагаюся створити користувальницьку клітинку для перегляду таблиці за допомогою кнопки. Я маю на увазі цю статтю тут . Я стикаюся з двома питаннями.
Я створив .xib файл із об’єктом UITableViewCell, затягнутим на нього. Я створив підклас UITableViewCell
і призначив його як клас клітини та Cell як ідентифікатор багаторазового використання.
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
}
}
У UITableViewController у мене є цей код,
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
}
}
Цей код відповідає помилкам, але коли я запускаю його в тренажері, він виглядає приблизно так.
У UITableViewController на аркуші розробки я нічого не зробив із коміркою. Порожній ідентифікатор і без підкласу. Я спробував додати ідентифікатор Cell до комірки-прототипу і запустив його знову, але я отримав той самий результат.
Ще одна помилка, з якою я зіткнувся - це коли я намагався реалізувати наступний метод у 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]
}
Як показано у згаданій статті, я змінив cell
форму типу параметра, UITableViewCell
на CustomOneCell
який є мій підклас UITableViewCell. Але я отримую таку помилку,
Метод переопределення із селектором 'tableView: willDisplayCell: forRowAtIndexPath:' має несумісний тип '(UITableView !, CustomOneCell !, NSIndexPath!) -> ()'
Хтось має ідею, як вирішити ці помилки? Вони, здавалося, добре спрацювали в Objective-C.
Дякую.
EDIT: Я щойно помітив, якщо я зміню орієнтацію симулятора на пейзаж і поверну його до портретного, клітини з’являються! Я все ще не міг зрозуміти, що відбувається. Я завантажив сюди проект Xcode, який демонструє проблему, якщо у вас є час для швидкого пошуку.