gpt4 book ai didi

uikit - UISwitch:Swift 3:以编程方式

转载 作者:行者123 更新时间:2023-12-02 02:17:48 26 4
gpt4 key购买 nike

如何以编程方式添加 uiswitch 并在打开时调用一个操作,在关闭时调用一个操作?我已经找了好几个小时了。我可以帮忙吗?我知道如何添加开关,但无论我处于哪个场景,它都会保留在屏幕上。到目前为止,我已经能够添加按钮并使其从打开切换到关闭,但由于某种原因,开关只是在每个场景的屏幕上显示。之后我迷路了,所以我遵循了这个;来自How to programmatically put a UISwitch in a SpriteKit/Skcene

是的,这是可能的。只需在 SKScene 类中使用此代码即可:

override func didMoveToView(view: SKView) {
/* Setup your scene here */
let switchDemo = UISwitch(frame:CGRectMake(150, 300, 0, 0))
switchDemo.on = true
switchDemo.setOn(true, animated: false)
switchDemo.addTarget(self, action: "switchValueDidChange:", forControlEvents: .ValueChanged)
self.view!.addSubview(switchDemo)
}

辅助方法:

func switchValueDidChange(sender:UISwitch!)
{
if (sender.on == true){
print("on")
}
else{
print("off")
}
}

我不断收到错误,因此我按照 Xcode 的建议进行操作,最终出现 SIGBART 错误。

最佳答案

您在 addTarget 操作行上调用了错误的选择器。他们最终在 Swift 2 中的某个时刻对其进行了更改,以摆脱使用字符串进行选择器方法调用,这使得它们现在更不容易出错。

将其更改为此(Swift 3 语法)

switchDemo.addTarget(self, action: #selector(switchValueDidChange(_:)), for: .valueChanged)

您基本上在操作参数中调用 #selector 并包含您想要调用的方法,在您的情况下为 switchValueDidChange。请注意末尾的 (_:) 语法,这表明您要调用的方法需要一个参数,在您的例子中是 UISwitch。

 func switchValueDidChange(_ sender: UISwitch) {
...
}

如果您想调用不带参数的常规方法,例如

 func switchValueDidChange() {
}

比你说的

switchDemo.addTarget(self, action: #selector(switchValueDidChange), for: .valueChanged)

没有 (_:) 语法。

希望这有帮助

关于uikit - UISwitch:Swift 3:以编程方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759253/

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