Неустранимая ошибка: неожиданно обнаружен ноль при развертывании ошибки необязательного значения в UITableViewCell? - PullRequest
0 голосов
/ 06 сентября 2018

Я использую раскадровку, у меня есть собственный класс tableviewcell. Я перетаскивал розетки от раскадровки до ячеек стола. В этом я добавляю угол и цвета для таких компонентов. Но я получаю эту ошибку Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения . Как решить это

Мой код в классе ячеек таблицы.

import UIKit

class detailsTableViewCell: UITableViewCell {

@IBOutlet weak var chargesTableViewCellView: UIView!
@IBOutlet weak var typeLbl: UILabel!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code

    chargesTableViewCellView.layer.borderColor = UIColor(red: 0.10, green: 0.39, blue: 0.65, alpha: 1.0).cgColor // Here I'm getting error
    chargesTableViewCellView.layer.borderWidth = 2.0
    chargesTableViewCellView.layer.cornerRadius = 10.0
}

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Зайдите в Интерфейсный Разработчик и удалите ВСЕ ваши ссылки на файл. Выберите контейнер раскадровки и нажмите на самую правую кнопку в Интерфейсном Разработчике. Вы найдете список ссылок там. Нажмите (x) для каждого из них.

Восстановите соединение после этого.

Если вы изменили имя, скопировали, вставили или переместили объекты в раскадровке, иногда ссылки смешиваются. На Xcode все выглядит хорошо, но у id ссылок есть несоответствия.

0 голосов
/ 06 сентября 2018

Я думаю, что вы использовали более одной ячейки с одним пользовательским классом, поэтому вам нужно добавить проверку с идентификатором повторного использования:

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
   // "identifier" is a cell identifier so please change this identifier with your cell identifier witch is used this outlet
        if self.reuseIdentifier == "identifier" {
    chargesTableViewCellView.layer.borderColor = UIColor(red: 0.10, green: 0.39, blue: 0.65, alpha: 1.0).cgColor // Here I'm getting error
        }

    chargesTableViewCellView.layer.borderColor = UIColor(red: 0.10, green: 0.39, blue: 0.65, alpha: 1.0).cgColor // Here I'm getting error
    chargesTableViewCellView.layer.borderWidth = 2.0
    chargesTableViewCellView.layer.cornerRadius = 10.0
}

Вам необходимо добавить проверку для reuseIdentifier, что ячейка содержит эту розетку. это будет работать для вас.

0 голосов
/ 06 сентября 2018

Вы можете создать класс для своего пользовательского представления следующим образом

import UIKit

class CornerView: UIView {

func setup() {

    self.layer.borderColor = UIColor(red: 0.10, green: 0.39, blue: 0.65, alpha: 1.0).cgColor
    self.layer.borderWidth = 2.0
    self.layer.cornerRadius = 10.0

}

override init(frame: CGRect) {
    super.init(frame: frame)
    setup()
}
required public init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setup()
}

}

тогда вы можете наследовать от вашего пользовательского класса

@IBOutlet weak var chargesTableViewCellView: CornerView!

примечание: убедитесь, что идентификатор ячейки из раскадровки одинаков во ViewController

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...