Только последние сохраненные данные отображаются в представлении стека - PullRequest
0 голосов
/ 12 февраля 2020

Я делаю вызов API, который возвращает набор пары ключ-значение, который я хочу отобразить на экране. Я использую файл xib и добавляю к нему пару ключ-значение. На дисплее отображается только последняя пара значений ключа. Это делается с использованием архитектуры MVVM.

@IBOutlet var currentBenefitsStackView: UIStackView!

func populateMemberBenefits(_ data: ResponseData) {
        let nib = UINib(nibName: "StackView", bundle: Bundle.SampleAccount)
        if let memberBenefitsView = nib.instantiate(withOwner: nil, options: nil).first as? StackView {
             guard let memberBenefitsPerks = data.benifts else {return} //data.benifts contains the key value pairs
            for benefits in memberBenefitsPerks {
                memberBenefitsView.labelText?.text = benefits.value
                let imageURL = URL(string: "\(SampleURL)")
                let image = try? Data(contentsOf: imageURL!)
                memberBenefitsView.imageView.image = UIImage(data: image!)
                currentBenefitsStackView.addArrangedSubview(memberBenefitsView)
            }

Только текущее изображение memberBenefitsView отображается в currentBenefitsStackView. Может ли кто-нибудь указать мне, где я делаю ошибку, или если требуется какая-либо дополнительная информация.

1 Ответ

1 голос
/ 13 февраля 2020

Вы выделяете только один memberBenefitsView и продолжаете обновлять его. Для него останутся присвоенные окончательные значения.

Вам необходимо распределить представление в каждой итерации вашего for l oop:

func populateMemberBenefits(_ data: ResponseData) {
    let nib = UINib(nibName: "StackView", bundle: Bundle.SampleAccount)
    guard let memberBenefitsPerks = data.benifts else {return} //data.benifts contains the key value pairs
    for benefits in memberBenefitsPerks {
        if let memberBenefitsView = nib.instantiate(withOwner: nil, options: nil).first as? StackView {
            memberBenefitsView.labelText?.text = benefits.value
            let imageURL = URL(string: "\(SampleURL)")
            let image = try? Data(contentsOf: imageURL!)
            memberBenefitsView.imageView.image = UIImage(data: image!)
            currentBenefitsStackView.addArrangedSubview(memberBenefitsView)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...