UIStackView добавить упорядочить подпредставления внутри tableView Cell didSet - PullRequest
0 голосов
/ 18 сентября 2018

В своем классе ячейки tableView я использую метод didSet для настройки значений пользовательского интерфейса, и там у меня есть массив строк из API, который я использую для создания массива кнопок и добавления его в UIStackView

var pollDataInPollCell: PollModel? {
    didSet{
        if let pollOptions = pollDataInPollCell?.poll_detail {
           //sample pollOptions = ["Button1","Button2","Button3","Button4"]
            for index in pollOptions {
                let bt = UIButton(type: .system)
                bt.setTitleColor(.blue, for: .normal)
                bt.setTitle(index, for: .normal)
                optionBtnStackView.addArrangedSubview(bt)
            }
        }
    }
}

мой stackView вне didSet

var optionBtnStackView: UIStackView = {
    let sv = UIStackView()
    sv.axis = .vertical
    sv.distribution = .fillEqually
    sv.spacing = 5
    return sv
}()

все отлично работает при запуске, однако, когда я прокручиваю вверх и вниз, мой стек просмотра добавляет еще 4 кнопки.Он имеет 4 при запуске, затем 8, а затем 12 и продолжает увеличиваться на 4 всякий раз, когда я прокручиваю свое приложение вверх и вниз.Я знаю, что проблема от tableView dequeueReusableCell, но я не мог найти способ исправить эту проблему.Какие-либо предложения?Спасибо.

1 Ответ

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

Используйте код ниже в вашем didSet

var pollDataInPollCell: PollModel? {
    didSet{
        for view in optionBtnStackView.subviews {
            optionBtnStackView.removeArrangedSubview(view)
            view.removeFromSuperview()
        }
        if let pollOptions = pollDataInPollCell?.poll_detail {
           //sample pollOptions = ["Button1","Button2","Button3","Button4"]
            for index in pollOptions {
                let bt = UIButton(type: .system)
                bt.setTitleColor(.blue, for: .normal)
                bt.setTitle(index, for: .normal)
                optionBtnStackView.addArrangedSubview(bt)
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...