gpt4 book ai didi

ios - Swift:如何将数据绑定(bind)到循环中的 View ?

转载 作者:行者123 更新时间:2023-11-30 13:35:42 27 4
gpt4 key购买 nike

我想通过for循环将数据绑定(bind)到UIImageView-es数组。但我不知道如何像Javascript数据属性一样简单地绑定(bind)。我有一个想法,制作一个数组 [UIImage : data] 来做到这一点。好吧,我的代码有问题:

问题:

  1. 如何在selectDecoration中获取其patternSelector?
  2. 如何创建与循环数据绑定(bind)的outlet?例如,如何将每个变量 pattern 绑定(bind)到每个操作 selectDecoration()

    func selectDecoration(recognizer: UITapGestureRecognizer) {
    print("OK")
    }
    let patternSelectorHeight: CGFloat = 120
    var i : Int = 0
    //var patternViews = [UIImageView]()
    for pattern in decorationPatterns {

    let patternSelector = UIImageView(image: UIImage(named: "test.jpg"))
    if let p = patternSelector.image {
    let proportion = p.size.width / p.size.height
    let w = proportion * patternSelectorHeight


    let patternX: CGFloat = (w + Conf.Size.margin) * CGFloat(i) + Conf.Size.margin
    let patternOrigin = CGPoint(x: patternX, y: decorationSelectionTitleHeight)

    patternSelector.userInteractionEnabled = true

    patternSelector.frame = CGRect(origin: patternOrigin, size: CGSize(width: w, height: patternSelectorHeight))
    patternSelector.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "selectDecoration:"))

    decorationBg.addSubview(patternSelector)
    decorationBg.bringSubviewToFront(patternSelector)
    //patternViews.append(patternSelector)

    }
    i++
    }

最佳答案

Swift 中没有对数据绑定(bind)的内置支持。您需要在数组中保留对 UIImageView 对象的引用(可能按照您的建议),以便稍后更新它们。

您需要设置 patterSelector.userInteractionEnabled=true 才能使 UITapGestureRecognizer 正常工作。

let patterSelectorSize = CGSize(width: 80.0, height: 160.0)
var imageViews = [UIImageView]() // This probably needs to be an instance variable so you can access it outside of this function
var i : Int = 0
for _ in decorationPatterns {
let patternX: CGFloat = (patterSelectorSize.width + 10) * CGFloat(i) + 10
let patternOrigin = CGPoint(x: patternX, y: CGFloat(60))
let patterSelector = UIImageView(image: UIImage(named: "default.jpeg"))
patterSelector.frame = CGRect(origin: patternOrigin, size: patterSelectorSize)
patterSelector.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "selectDecoration:"))
patterSelector.userInteractionEnabled=true
imageViews.append(patterSelector)

decorationBg.addSubview(patterSelector)
decorationBg.bringSubviewToFront(patterSelector)
i++
}

您还必须确保 decorationBg 中的 userInteractionEnabledtrue,否则触摸将不会传播到您的 ImageView

关于ios - Swift:如何将数据绑定(bind)到循环中的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36100229/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com