Swift - 更新和存储多个以编程方式创建的按钮的位置

Swift - Update and store position of a multiple programmatically created buttons

我有一个按钮可以根据下面看到的 class 剪辑创建其他按钮。这些新创建的按钮被添加到一个数组中并存储在一个 plist 中。

class Clip: Encodable, Decodable {
var name: String = ""
var xCoordinate: Int = 100
var yCoordinate: Int = 300
// more parameter will be added later on e.g color, scale etc..
}

每个按钮都可以在视图中移动,新的 x 和 y 坐标存储在 plist 中。

@objc func handlePan(sender: UIPanGestureRecognizer){

    let uIViewSelected = sender.view!

    switch sender.state {
    case .began, .changed :
        moveViewWithPan(view: uIViewSelected, sender: sender)
        break
    case .ended:
      //Finds the position when the button is no longer being dragged

        let x = Int(uIViewSelected.center.x)
        let y = Int(uIViewSelected.center.y)

      //clipArray[0] need to be the corresponding clicked button e.g clipArray[2]

        clipArray[0].xCoordinate = x
        clipArray[0].yCoordinate = y
        saveData()
        break
    default:
        break
    }
}

只有在我创建一个按钮时以上才有效。当添加更多按钮时,以上行仅更改数组中的第一个剪辑。我需要一种方法来将值更新为单击的正确按钮。

当我以编程方式创建所有单击按钮时,如何识别它们的数组位置?目前我放置在 clipArray 的值 0 处。

 clipArray[0].xCoordinate = x
 clipArray[0].yCoordinate = y

我什至不确定使用 plist 是否是首先存储按钮的最佳方式。

任何帮助或文件将不胜感激。 谢谢

根据 dfd 的回复,我为每个创建的按钮添加了标签,现在它解决了这个问题。

        let x = Int(uIViewSelected.center.x)
        let y = Int(uIViewSelected.center.y)
        //clipArray.append(clip)

        var tagNo = uIViewSelected.tag

        clipArray[tagNo].xCoordinate = x
        clipArray[tagNo].yCoordinate = y