Ios Swift:如何将数据绑定到循环中的视图?

Ios Swift:如何将数据绑定到循环中的视图?,ios,swift,swift2,Ios,Swift,Swift2,我想通过for循环将数据绑定到UIImageView的数组。但我不知道如何绑定像Javascript数据属性这样简单的属性。 我的想法是制作一个数组[UIImage:data]来实现这一点。 好的,我的代码有点问题: 问题: 如何在SelectEncoration中获取其patternSelector 如何创建与循环中的数据绑定的输出?例如,如何将每个变量模式绑定到每个操作selectedocation() func selectDecoration(recognizer: UITapGestu

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

问题:

  • 如何在SelectEncoration中获取其patternSelector
  • 如何创建与循环中的数据绑定的输出?例如,如何将每个变量
    模式
    绑定到每个操作
    selectedocation()

    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中没有内置的数据绑定支持。您需要保留对
    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
    中的
    userInteractionEnabled
    true
    ,否则触摸不会传播到您的图像视图

    (1)如何创建与循环中的数据绑定的输出

    如果要绑定字符串数据,请尝试
    accessibilityLabel
    property。您可以静默地设置和检索值

    (2) 为什么follow中的UITapgestureRecognizer根本不工作

    您没有启用
    UIImageView的
    userInteractionEnabled


    希望这对您有所帮助。

    我添加了userInteractionEnabled=true。但仍然无法工作请启用superview的userInteractionEnabled,在您的案例中它是decorationBg。如何将数据绑定到每个patternSelector?您希望绑定哪种类型的数据?字符串?不能以本机方式绑定数据。您可以更新按钮文本。人们已经开发了一些用于数据绑定的框架,如reactivecocoa。你可以像我写的一样搜索谷歌。我测试了这段代码,它对我有效。什么是装饰BG?它是否具有
    userInteractionEnabled=true
    ?如果没有,则图像视图将不响应点击以及如何将数据绑定到每个模式选择器?