Swift: неверная ширина ячейки таблицы - PullRequest
0 голосов
/ 24 ноября 2018

Это мой код:

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

    if(x){
        cell.width = 100
    } else {
        cell.width = 300
    }
}

И я управляю по приведенному ниже коду:

class MyChatCell: UITableViewCell {
    var width: Int = 0

    override var frame: CGRect {
        get {
            return super.frame
        }
        set (newFrame) {
            var frame = newFrame
            var newWidth = frame.width
            if(width > 0){
                newWidth = CGFloat(width)
            }

            frame.size.width = newWidth

            super.frame = frame
        }
    }
}

Этот код работает, но иногда при перезагрузке данных или таблицы прокрутки, ширина не установленаисправить для этой строки ячеек

Это пример для обычного просмотра:

======= one =======

=== two ===

Если я прокручиваю или перезагружаю данные, показывайте ниже вид:

======= one =======

======= два =======

1 Ответ

0 голосов
/ 24 ноября 2018

Добавьте этот метод в ваш MyChatCell класс:

override func prepareForReuse()
{
    super.prepareForReuse()

    frame.size.width = 0
}

Скажите, работает ли он.

...