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)的答案相似的东西来选择我的标签,但我没有设法使他的摘要工作。