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
我有一个按钮可以根据下面看到的 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