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

时间:2015-02-18 22:31:27

标签: ios swift nsmutablearray nsarray

我试图用一系列点来创建一系列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中看到类似的问题,试过他们的方法但是没有用。我该如何解决?感谢。

2 个答案:

答案 0 :(得分:0)

请勿在{{1​​}}循环中使用self.button。只需使用for

答案 1 :(得分:0)

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