我正在进行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图像。任何人都可以指出我在哪里出错,或者是否需要任何其他信息。
您只分配一个,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] 删除。
我来说两句