Ios Swift 3更改UIButton的标题
我一直在网上寻找,但我找不到解决问题的方法。我希望我的“开始”按钮文本更改为“重新启动”一旦游戏结束如果需要任何其他信息,请告诉我。谢谢,非常感谢您的帮助。下面是我的代码Ios Swift 3更改UIButton的标题,ios,swift,swift3,uibutton,Ios,Swift,Swift3,Uibutton,我一直在网上寻找,但我找不到解决问题的方法。我希望我的“开始”按钮文本更改为“重新启动”一旦游戏结束如果需要任何其他信息,请告诉我。谢谢,非常感谢您的帮助。下面是我的代码 class ViewController: UIViewController { var gameOver = false var stopFuncs = false var gameTimer = Timer() var counter = 10 var selected = "NONE" var score = 0
class ViewController: UIViewController {
var gameOver = false
var stopFuncs = false
var gameTimer = Timer()
var counter = 10
var selected = "NONE"
var score = 0
var colour = "NONE"
@IBOutlet weak var colourLabel: UILabel!
let colourProvider = ColourProvider()
@IBOutlet weak var scoreLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
colour = colourProvider.randomColour()
print(colour)
colourLabel.text = colour
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet weak var counterLabel: UILabel!
func updateCounter() {
if counter >= 0 {
counterLabel.text = String(counter)
counter -= 1
}
}
@IBAction func startButton() {
gameOver = false
counter = 10
stopFuncs = false
var _ = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateCounter), userInfo: nil, repeats: true)
}
@IBAction func greenButton() {
if stopFuncs { return }
compareColours(selectedColour: "GREEN")
changeColourLabel()
colourLabel.textColor = UIColor.green
}
@IBAction func blueButton() {
if stopFuncs { return }
compareColours(selectedColour: "BLUE")
changeColourLabel()
colourLabel.textColor = UIColor.blue
}
@IBAction func yellowButton() {
if stopFuncs { return }
compareColours(selectedColour: "YELLOW")
changeColourLabel()
colourLabel.textColor = UIColor.yellow
}
@IBAction func pinkButton() {
if stopFuncs { return }
compareColours(selectedColour: "GREEN")
changeColourLabel()
colourLabel.textColor = UIColor.red
}
func compareColours(selectedColour: String) {
if gameOver == false && counter >= 1 {
if selectedColour == colour {
score += 1
let scoreString = String(score)
scoreLabel.text = scoreString
}
else {
gameOver = true
}
}
else {
stopFuncs = true
}
}
func changeColourLabel() {
colour = colourProvider.randomColour()
colourLabel.text = colour
print(colour)
}
}您的按钮需要是IBOutlet而不是IBAction。在按住ctrl键将Interface Builder拖动到代码中时,请确保选择“Outlet”选项,如下所示: 然后您可以更改按钮标题,如下所示:
else {
startButton.setTitle("Button Title", for: .normal)
stopFuncs = true
}
您已经在一些标签上设置了
IBOutlets
对于按钮,您可能需要同时设置IBaction
和IBOutlet
IBOutlet
是一种东西。名词。它是对视图对象的引用
iAction
是一个动词。行动。当UIControl
(点击按钮、移动滑块、更改分段控件上的选定值等)发生问题时,调用该代码
iAction
是一个在用户与控件交互时调用的函数(对于按钮,您几乎总是将操作链接到.touchUpInside控件事件)
用pinkButton
这样的名称命名您的操作是个坏主意,会导致混淆。我建议将动作重命名为动词,比如handlePinkButton
(或者“pinkButtonTapped”,但我更喜欢动作名称为动词。)
请注意,重命名iAction
和/或iOutlet
时,必须进入IB(IB=接口生成器),选择连接检查器,删除现在不正确的iOutlet/iAction,并控制从对象到更新的outlet/action的拖动
如果不这样做,您将在运行时遇到非常混乱的崩溃:
- 在代码中重命名
而不在IB中更改它们时,当您尝试从故事板加载视图控制器时,会出现错误“此类不符合密钥旧\u outlets\u名称的键值编码”(其中“旧\u outlets\u名称”将是您的插座的旧名称)。重命名操作)IBOutlets
- 在代码中重命名
而不在IB中更改它们时,当您尝试点击按钮(或触发其他控件的操作)时,会出现错误“无法识别的选择器发送到实例big_hex_number”iActions
你应该在主编辑器中打开故事板,在助理编辑器中打开源代码,然后控制从IB中的按钮拖动到你的源代码中,就在你班上另一个出口的下方。Hi,这对我来说仍然不起作用。我收到这个错误消息,显示您实例化按钮的代码。听起来不像是你在做的properly@IBActionfunc startButton(){}嗨,我刚刚更新了我的按钮代码,这样当你点击它时,它就会执行一些代码。如果我把它换成插座,它还能用吗?感谢到目前为止的帮助。@iAction func startButton(){gameOver=false counter=10 stopFuncs=false var\uUz=Timer.scheduledTimer(时间间隔:1.0,目标:self,选择器:#选择器(updateCounter),用户信息:nil,重复:true)}