Свойство суперкласса UITableViewCell, возвращающее ноль, если установлено из UITableView - PullRequest
0 голосов
/ 24 августа 2018

Я потратил много времени на это.Свойство (isSender) мастер / суперкласса UITableViewCell всегда возвращает ноль, когда свойство установлено из tableView:

Вот мастер-класс Cell:

   class MasterTableViewCell: UITableViewCell {

        @IBOutlet weak var userProfileImage:UIImageView!
        @IBOutlet weak var postTextLabel:UILabel!

    var isSender:Bool!

    override func awakeFromNib() {
// code here
    }

Вотподкласс ячейки:

class VideoPostTableViewCell: MasterTableViewCell {

    @IBOutlet weak var playButton: UIButton!



    override func awakeFromNib() {
    super.awakeFromNib()



    if isSender == true {
        print("true")
    }
    else {
        print("false")
    }

Вот метод tableView:

func configureCell(indexPath: IndexPath) -> UITableViewCell {

        guard let cell = tableView.dequeueReusableCell(withIdentifier: "VideoPostTableViewCell") as? VideoPostTableViewCell else {
            return UITableViewCell()}

        let x = post.userID
        let y = user?.uid
        let isEqual = (x == y)
        cell.isSender = isEqual
        return cell

isSender всегда возвращает nil

Примечание: nil isтакже вернулся, когда я установил isSender непосредственно в VideoPostTableViewCell.Кроме того, когда я устанавливаю точку останова на let isEqual = (x == y), isEqual возвращает true

Last, в VideoPostTableViewCell и MasterTableViewCell есть другие свойства, которые все установлены правильно с помощью того же метода вtableView.Я оставил их вне вопроса, чтобы уменьшить код.

Любая помощь с благодарностью.Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Согласно комментарию ОП ...

Оценка if isSender == true происходит внутри awakeFromNib(), но это происходит до выполненияcell.isSender = isEqual.

0 голосов
/ 24 августа 2018

В вашем заявлении вы должны исправить случай:

guard let cell = tableView.dequeueReusableCell(withIdentifier: "VideoPostTableViewCell") as? VideoPostTableViewCell else {
        fatalError("Misconfigured cell type, VideoPostTableViewCell!")
}
...