gpt4 book ai didi

ios - 如何在 Swift 中动态创建 buttonAction 函数

转载 作者:行者123 更新时间:2023-11-28 11:22:06 26 4
gpt4 key购买 nike

在 MCQ 应用程序中,我像这样以编程方式创建多个 UIButton

func createNewButton(buttonName: String, xPosition: CGFloat, yPosition: CGFloat) -> UIButton {
let myButton = UIButton(frame: CGRectMake(0, 0, 50, 50))
myButton.center = CGPoint(x: xPosition, y: yPosition)
myButton.setImage(UIImage(named: buttonName), forState: UIControlState.Normal)
myButton.addTarget(self, action: "buttonName:", forControlEvents: UIControlEvents.TouchUpInside)
return myButton
}

问题是为了将功能与这些按钮相匹配,我需要创建一个功能。因此该函数应该看起来像

func buttonName(sender: UIButton!) {
// do some stuff
}

这些函数其实就是将一个字符串保存到一个数组中,保存的字符串就是函数本身的名字。例如,如果我们有 buttonName: "blackberry",代码将设置一个名为 "blackberry" 的图像并添加一个名为 "blackberry" 因此我想要一个名为 func blackberry(sender: UIButton)buttonAction 函数,这个函数将保存字符串 "blackberry"String 数组中。

但是所有这些都应该在初始 buttonName: String 参数的函数中完成。

或者我真的做事不对,那我该怎么办?

最佳答案

这个怎么样。将所有按钮发送到 processButton(button: UIButton)。创建按钮时,设置 tag 属性,为每个按钮分配一个唯一的编号。然后您可以获得一个将按钮标记转换为字符串的数组。

var buttonNames: [String] = []
var currentIndex = 0

func createNewButton(buttonName: String, xPosition: CGFloat, yPosition: CGFloat) -> UIButton {
let myButton = UIButton(frame: CGRectMake(0, 0, 50, 50))
myButton.center = CGPoint(x: xPosition, y: yPosition)
myButton.setImage(UIImage(named: buttonName), forState: UIControlState.Normal)
myButton.addTarget(self, action: "processButton:", forControlEvents: UIControlEvents.TouchUpInside)
myButton.tag = currentIndex++
self.buttonNames.append(buttonName)
return myButton
}

func processButton(button: UIButton) {
let string = buttonNames[button.tag]
// process string
}

关于ios - 如何在 Swift 中动态创建 buttonAction 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26947899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com