Я пытаюсь создать пользовательскую ячейку представления таблицы из наконечника. Я имею в виду эту статью здесь. Я столкнулся с двумя проблемами.
Я создал файл .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 в раскадровке я ничего не сделал с ячейкой. Пустой идентификатор и отсутствие подкласса. Я попытался добавить идентификатор ячейки в ячейку прототипа и снова запустить его, но получаю тот же результат.
Еще одна ошибка, с которой я столкнулся, заключается в том, когда я попытался реализовать следующий метод в 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 здесь, демонстрируя проблему, если у вас есть время для быстрого просмотра.













