Ошибка наконечника TableViewCell: загружен наконечник, но выход розетки не был установлен - PullRequest
0 голосов
/ 15 января 2019

Пытаюсь создать xib ячейки tableView, но застрял с ошибкой «загрузил перо, но розетка представления не была установлена»

Я прочитал много постов, и большинство говорят, что перетаскивают "представление" из владельца файла в представление IB.

Однако, если вы заметили на изображениях, у меня нет «просмотра» в качестве опции. Я воссоздал XIB с теми же результатами. Возможно, новое в Swift 4.2.

Любая помощь будет огромной.

class VersionTVCell: UITableViewCell {

    @IBOutlet weak var  versionNumber: UILabel!
    @IBOutlet weak var  versionDetail: UILabel!
    @IBOutlet weak var  versionDate: UILabel!
}


class VersionTVC: UITableViewController {

    fileprivate var versions: Array<VersionModel> = [VersionModel]()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.versions = AppDelegate.getRLDatabase().getVersion()

        tableView.register(UINib(nibName: "VersionTVCell", bundle: nil), forCellReuseIdentifier: "VersionCell")

        tableView.rowHeight = UITableView.automaticDimension
        tableView.estimatedRowHeight = 70
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "VersionCell", for: indexPath) as! VersionTVCell

        cell.versionNumber.text              =   self.versions[(indexPath as NSIndexPath).row].versionNumber
        cell.versionDetail.text              =   self.versions[(indexPath as NSIndexPath).row].versionDetail
        cell.versionDate.text                =   self.versions[(indexPath as NSIndexPath).row].versionDate

        return cell
    }

    override func numberOfSections(in tableView: UITableView) -> Int {

        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return self.versions.count
    }
}

Ниже приведены два снимка экрана: первый из ячейки, а второй - от владельца файла.

First Screen shot

Second Screen shot

Я также пытался связать владельца файла с ярлыками. Не помогло.

EDIT: Добавление моей функции addSubView:

@objc func loadVersions() {

    let newSubView = AddSubView.toVersions.getView()
    let blackBackground = UIView(frame: CGRect(x: 0, y: 65, width: self.view.frame.width, height: self.view.frame.height))
    blackBackground.backgroundColor = UIColor.black.withAlphaComponent( 0.7)

    UIView.transition(with: self.view, duration: 0.3, options: UIView.AnimationOptions.transitionCrossDissolve,
                      animations: {self.view.addSubview(self.backgroundView)}, completion: nil)

    newSubView.frame = CGRect(x: 0, y: (self.view.frame.height) * 0.1, width: (self.view.frame.width) * 0.9, height: (self.view.frame.height) * 0.8)
    newSubView.layer.borderWidth = 1
    newSubView.layer.borderColor = UIColor.defaultDialogBorderColor().cgColor
    newSubView.layer.cornerRadius = 8.0
    newSubView.clipsToBounds = true
    self.view.addSubview(newSubView)
}

Screenshot of VersionTVC

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Я попробовал ваш код, и он просто отлично работает.

Убедитесь, что вы не назначаете VersionTVCell класса UITableViewCell владельцу файла и не подключаете @IBOutlet к xib

enter image description here

Соединения с владельцем файла Инспектор должен выглядеть примерно так:

enter image description here

Также попробуйте удалить и заново подключить @IBOutlet

enter image description here

Протестированный пример

enter image description here

0 голосов
/ 15 января 2019

Насколько я понимаю, в Коде все правильно, поэтому примените какой-то шаг.

1) Присвойте имени класса Sure Cell правильное имя.

2) очистить код с помощью этой команды Shift + опция + команда + k .

3) Если вы не добились успеха с вышеуказанным шагом. Удалите делегат и выходы источника данных из пользовательского интерфейса tableView и запишите вручную после этой строки.

tableView.register(UINib(nibName: "VersionTVCell", bundle: nil), forCellReuseIdentifier: "VersionCell")
tableView.delegate = self
tableView.dataSource = self
tableView.reloadData()
...