与孩子一起存储Uiview



im在2x2网格上工作,每个人都有带有文本和背景颜色的uiview和孩子标签。

我以这样的循环生成uiview:

// Generatin answer cube buttons
        for var i = 0; i < cubeCount; i++
        {
            // two answers case
            if(cubeCount < 3)
            {
                var btn = button(xpos, y: ypos, width: screenWidth, height: (screenHeight * 2));
                var lbl = labelis("(i)", btn: btn)
                btn.addSubview(lbl)
                xpos = xpos + (screenWidth + 10);
                self.view.addSubview(btn);
            }
            // 3+ answers case
            else
            {
                var btn = button(xpos, y: ypos, width: screenWidth, height: screenHeight);
                var lbl = labelis("(i)", btn: btn)
                btn.addSubview(lbl)
                xpos = xpos + (screenWidth + 10)
                self.view.addSubview(btn)
                // change row in case of more than 2 answers
                if(i == 1)
                {
                    xpos = 20
                    ypos = ypos + (screenHeight + 10)
                }
            }

我也有一个Tapgenture功能,让我知道当我单击一个答案立方之一时。

我的问题是,当单击其中一个立方体时,我想访问所有立方体并更改其标签的背景颜色。

i虽然将Uiview存储到数组中,以便我可以从TapGesture功能上对它们进行操作,但是我看不出如何使此工作。

i虽然,也许有人可以指导我解决这个问题。谢谢。

在单击处理程序的单击处理程序中,请尝试以下代码:

for subview in view.subviews as [UIView] {
    if let cubeButton = subview as? button {
        //Do something with this cubeButton here.
    }
}

,所以我找到了解决问题的解决方案,因此我为将来可能研究的人回答了自己的问题:

我已经创建了一个数组:

var answerData:[UIView] = [];

并为我想保留存储的人添加了我的uiview

var uiviewvariable = UIView()    
answerData.append(uiviewVariable)

然后,在我的Tapgesture函数上,当用户点击视图之一时,我可以在uiviews

上使用ACT来调用ACT
// Accessing stored UIView
        for(var i = 0; i < answerData.count; i++){
            // Accessing subviews
            for subview in answerData[i].subviews as [UIView]
            {
                if subview.tag == 0
                {
                    if let label = subview as? UILabel {
                        // do something with label inside the views
                    }
                }                
            }
        }

由于某种原因,我使用了与阿卜杜拉(Abdullah)的答案相似的东西来选择我的标签,但我没有设法使他的摘要工作。

最新更新