我试图用一系列点来创建一系列UIButton。 aCoord是一系列积分。对于每个点,我使用其x,y坐标生成UIButton。然后将每个按钮存储在buttonArray中。
let aCoord:NSMutableArray = self.homeViewData[self.number]["annotations"] as NSMutableArray
var buttonObjects: NSMutableArray = NSMutableArray()
var coordx:Float = Float()
var coordy:Float = Float()
for item in aCoord {
coordx = item[0] as Float
coordy = item[1] as Float
let button = UIButton.buttonWithType(UIButtonType.System) as UIButton
self.button.frame = CGRectMake(CGFloat(coordx),CGFloat(coordy), 60, 60)
self.button.setImage(UIImage (named: "tagbutton.png"), forState: .Normal)
self.button.addTarget(self, action: "buttonAction", forControlEvents:.TouchUpInside)
buttonObjects.addObject(self.button)
self.dialogView.addSubview(self.button)
}
但不知何故,新按钮总是覆盖前一个按钮,如下所示:
<UIButton: 0x7f9269d73bc0; frame = (159 300; 60 60); opaque = NO; layer = <CALayer: 0x7f9269d72d90>>
(
"<UIButton: 0x7f9269d73bc0; frame = (159 300; 60 60); opaque = NO; layer = <CALayer: 0x7f9269d72d90>>"
)
1
<UIButton: 0x7f9269d73bc0; frame = (154 430.5; 60 60); opaque = NO; layer = <CALayer: 0x7f9269d72d90>>
(
"<UIButton: 0x7f9269d73bc0; frame = (154 430.5; 60 60); opaque = NO; layer = <CALayer: 0x7f9269d72d90>>",
"<UIButton: 0x7f9269d73bc0; frame = (154 430.5; 60 60); opaque = NO; layer = <CALayer: 0x7f9269d72d90>>"
)
2
带坐标(154,430.5)的按钮用(159,300)覆盖了该按钮。 在Obj-C中看到类似的问题,试过他们的方法但是没有用。我该如何解决?感谢。
答案 0 :(得分:0)
请勿在{{1}}循环中使用self.button
。只需使用for
。
答案 1 :(得分:0)
您不应在循环中self
之前添加button
因为按钮是本地创建的变量而不是类的属性。删除它。