新数据覆盖了 NSMutableArray 中的先前数据 (Swift)

New data overwrote previous data in NSMutableArray (Swift)

我正在尝试用点数组创建一系列 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 中看到类似的问题,尝试了他们的方法但不起作用。我该如何解决?谢谢

不要在 for 循环中使用 self.button。只需使用 button.

您不应在循环中的 button 之前添加 self,因为按钮是本地创建的变量,而不是 class 的 属性。删除它。