有没有办法在其标记ID访问的for循环中创建视图?如果不是有更好的方法来实现以下目标?我的猜测是,因为我覆盖了'myView'var,它始终是for循环的最后一个值。但有没有办法在下面实现这样的目标? [夫特]
var myView = UIView();
// Create a for loop of 20 Views on different x/y axis
var myView = UIView();
var leftPos : CGFloat = 0;
for (var i = 0; i < 20; i++){
myView.backgroundColor = UIColor.clearColor()
myView.tag = i;
myView.frame = CGRect(x: leftPos, y: 0, width: 20, height: 20)
mySuperView.addSubview(myView)
leftPos += 20;
}
// Then later on reference it by its tag id:
myView.tag[13].backgroundColor = UIColor.redColor()
答案 0 :(得分:3)
我建议更好的解决方案是保留您可以通过索引引用的视图数组,而不是使用标记。
// Declare a variable to hold on to your subviews
var views = [UIView]()
// Create 20 views, add them as subviews and add them to the views array
for i in 0..<20 {
let leftPos = CGFloat(i) * 20
let view = UIView(frame: CGRect(x: leftPos, y: 0, width: 20, height: 20))
mySuperView.addSubview(view)
views.append(view)
}
// Access the view by it's index - no need for a tag.
views[13].backgroundColor = .redColor()
答案 1 :(得分:2)
您可以使用viewWithTag
功能找到具有特定标记的视图:
view = mySuperView.viewWithTag(13)
请注意,使用0标记是“坏”,因为如果没有使用其他值,那么这是默认标记值。