这绝对不是禁用按钮的重复。我经历过好几次都没有成功。事实上,我不记得在那里看到sender.enabled
。我在Apple Developer's Forum中找到了该代码。
你可以通过sender参数引用IBAction
按钮并从代码中的其他位置更改其状态吗?更改IBAction
闭包内按钮的状态看起来像:sender.enabled = false
或sender.enabled = true
但是我试图从另一个函数中改变它的状态。
我知道可以从不同的函数内部更改IBOutlet
按钮的状态,如下所示:
@IBOutlet weak var myButton: UIButton!
// then elsewhere in your code, within a method implementation:
myButton.enabled = false
但是使用IBAction
按钮就可以实现这一点。
是的,您可以在需要时更改status
财产。
@IBOutlet var BtnOne:UIButton! @IBOutlet var BtnTwo:UIButton! @IBAction func btnOnePressed (_ sender: Any) { print("BtnOne is disabled") BtnOne.isEnabled = false // or true //you can call any func btnTwoPressed() } @IBAction func btnTwoPressed (_ sender: Any) { print("BtnOne is enabled") BtnOne.isEnabled = true }
是。这是可能的。您可以将UIButton对象发送到其他功能来实现此目的。
@IBAction func buttonAction(_ sender: UIButton) {
self.receiveEvent(sender: sender)
}
func receiveEvent(sender:UIButton) {
sender.isEnabled = false
}
我希望这有帮助。
你对@IBAction
的意思有点困惑。
这是一种将故事板中的动作(通常是.touchUpInside
用于UIButton
)连接到代码中的函数的方法。 sender
参数成为被点击的按钮。
这段代码,例如:
@IBAction func buttonTapped(_ sender: UIButton) {
// code here
}
可以指定为控制器中许多不同按钮的.touchUpInside
动作。想象一组标记为1到10的按钮。将每个按钮连接到该@IBAction
,并且:
@IBAction func buttonTapped(_ sender: UIButton) {
print("You tapped the button labeled: \(sender.currentTitle)")
}
如果您有一个按钮对象的引用,您可以使用@IBAction
方法获取分配给它的动作(通过代码或通过故事板actions(forTarget:forControlEvent:)
分配),但这可能不太合适。
举个例子,虽然...假设你的视图中有一个连接到上面显示的@IBAction
的按钮,你可以这样做:
override func viewDidLoad() {
super.viewDidLoad()
for v in view.subviews {
if let b = v as? UIButton,
let a = b.actions(forTarget: self, forControlEvent: .touchUpInside) {
if a.contains("buttonTapped:") {
print("Found button with buttonTapped: IBAction \(b)")
}
}
}
}
您可以更轻松地将按钮连接到@IBOutlet
s(或者@IBOutlet Collection
。如果您的代码真的试图找到连接到@IBAction
的按钮(或按钮),您可能需要重新评估您的代码设计。