gpt4 book ai didi

xcode - 如何传入一个字符串来调用 Swift 子类中的操作

转载 作者:行者123 更新时间:2023-11-30 14:13:36 25 4
gpt4 key购买 nike

我创建了一个名为 SpriteKitButtonSKNode 子类,它创建了一个用于 SpriteKit 的自定义“按钮”,我在这里找到了它:

http://nathandemick.com/programming/tutorial/2014/09/23/buttons-sprite-kit-using-swift.html

它工作得很好,我设置了一个像这样的按钮:

var page4Button = SpriteKitButton(buttonUnpressedImage: "page4Unpressed.png", buttonPressedImage: "page4Pressed.png", buttonAction: page4)
page4Button.position = CGPoint(x: 210, y: 210)
page4Button.zPosition = 1.0
self.addChild(page4Button)

它将正确调用我的 page4( ) 函数。所以我的问题是:如何修改我的 SpriteKitButton 类,通过发送 buttonAction 字符串“page4:”来初始化,而不是直接告诉它使用函数 page4?

我的目标是能够使用字符串插值初始化 buttonAction,这样我就可以使用 for 循环制作按钮,而不是在多行代码中单独制作每个按钮。我以前从未需要从像这样的子类返回一些东西,而且我不太确定从哪里开始。

感谢您的建议!

最佳答案

简短的回答是你不能。 Swift 不允许将 String 转换为闭包。但是,您可以通过将函数数组中的每个元素作为按钮初始值设定项的 buttonAction 参数传递来在循环中创建所有按钮。

首先,定义并初始化 ()->Void 函数数组

let actions:[()->Void] = [page1,page2,page3]

然后,通过将每个数组元素作为 buttonAction 参数传递来在循环中创建按钮

for i in 0..<actions.count {
// Create your buttons here with actions[i] as the buttonAction argument

}

最后,定义你的函数/方法

func page1() {
println("page 1")
}

func page2() {
println("page 2")
}

func page3() {
println("page 3")
}

关于xcode - 如何传入一个字符串来调用 Swift 子类中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31484058/

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