我在2x2网格上工作,每个人都有一个UIView和一个带有文字和背景颜色的子标签。
我用这样的for循环生成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)
}
}
我还有一个tapGesture功能让我知道当我点击其中一个答案立方体时。
我的问题是,当点击其中一个立方体时,我想访问所有立方体并更改其标签的背景颜色。
我虽然将UIView存储到一个数组中,所以我可以通过tapGesture函数对它们进行操作,但我不知道如何才能使它工作。
我认为也许有人可以引导我解决这个问题。 感谢。
答案 0 :(得分:0)
在立方体按钮的点击处理程序中,尝试以下代码:
for subview in view.subviews as [UIView] {
if let cubeButton = subview as? button {
//Do something with this cubeButton here.
}
}
答案 1 :(得分:0)
所以我找到了解决问题的方法,所以我回答了自己的问题,以便将来可能会对此进行调查:
我创建了一个数组:
var answerData:[UIView] = [];
并为我想要存储的人添加了我的UIView
var uiviewvariable = UIView()
answerData.append(uiviewVariable)
然后,在我的tapGesture函数上,当用户点击其中一个视图时,我可以调用该数组并在UIViews上使用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
}
}
}
}
出于某种原因,我使用类似于阿卜杜拉的答案来选择我的标签,但我没有设法让他的代码片段工作。