开始和暂停按钮启用/禁用 swift
Posted
技术标签:
【中文标题】开始和暂停按钮启用/禁用 swift【英文标题】:start and pause buttons enabled/disabled swift 【发布时间】:2016-11-04 05:21:26 【问题描述】:我是初学者,所以此时我可能看不到明显的东西。所以请帮忙。当按下 pauseButton 时,我需要再次启用我的 startButton,反之亦然。不过,我无法创建两个 UIButton
函数都可以访问的 var。我该怎么办?这是我的部分代码:
@IBAction func Start(_ sender: AnyObject)
let disableMyStartButton = sender as? UIButton
disableMyStartButton?.isEnabled = false
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true)
@IBAction func pauseTimer(_ sender: AnyObject)
timer.invalidate()
WarningLabel.text = "Paused"
【问题讨论】:
你的意思是说,两个按钮变量不能取IBOutlet?为什么? 在启用或禁用时是否要停止触摸用户交互或更改图像? 【参考方案1】:您需要创建buttons
的Outlet
并在您的方法中使用它们。
@IBOutlet var btnStart: UIButton!
@IBOutlet var btnPause: UIButton!
@IBAction func start(_ sender: UIButton)
sender.isEnabled = false
btnPause.isEnabled = true
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true)
@IBAction func pauseTimer(_ sender: UIButton)
sender.isEnabled = false
btnStart.isEnabled = true
timer.invalidate()
WarningLabel.text = "Paused"
您也可以对这样的按钮使用单个操作来完成此操作。
@IBAction func onStartOrPause(_ sender: UIButton)
if (sender == btnStart)
sender.isEnabled = false
btnPause.isEnabled = true
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true)
else
sender.isEnabled = false
btnStart.isEnabled = true
timer.invalidate()
WarningLabel.text = "Paused"
注意:您也可以通过在动作中更改标题或图像来使用单个按钮进行相同的操作。
【讨论】:
谢谢。但是,出现“无法为属性发送者分配一个 let 常量”错误。有什么其他措施可以避免吗? 在第一个解决方案中,在 sender.isEnabled = false 行有两个操作 @AntonPlatonov 不明白为什么会出现此错误,是否将您的方法替换为我的方法,因为我使用的是(_ sender: UIButton)
而不是您之前使用的 (_ sender: AnyObject)
。跨度>
这就是问题所在。谢谢你。现在我在下一行有线程 1:EXC BAD INSTRUCTION。但我会试着自己弄清楚。感谢您的帮助。
@AntonPlatonov 如果您忘记将 Outlet Buttons 与 Controller 连接,然后连接它,可能这就是您遇到崩溃的原因。以上是关于开始和暂停按钮启用/禁用 swift的主要内容,如果未能解决你的问题,请参考以下文章