堆栈视图中仅显示最后存储的数据

ch

我正在进行API调用,该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)
            }

在currentBenefitsStackView中仅显示最后一个memberBenefitsView图像。任何人都可以指出我在哪里出错,或者是否需要任何其他信息。

Paulw11

您只分配一个,memberBenefitsView并且不断更新。将保留分配的最终值。

您需要在循环的每次迭代中分配一个视图for

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)
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章