Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 3更改UIButton的标题_Ios_Swift_Swift3_Uibutton - Fatal编程技术网

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的拖动

如果不这样做,您将在运行时遇到非常混乱的崩溃:

  • 在代码中重命名
    IBOutlets
    而不在IB中更改它们时,当您尝试从故事板加载视图控制器时,会出现错误“此类不符合密钥旧\u outlets\u名称的键值编码”(其中“旧\u outlets\u名称”将是您的插座的旧名称)。重命名操作)

  • 在代码中重命名
    iActions
    而不在IB中更改它们时,当您尝试点击按钮(或触发其他控件的操作)时,会出现错误“无法识别的选择器发送到实例big_hex_number”


你应该在主编辑器中打开故事板,在助理编辑器中打开源代码,然后控制从IB中的按钮拖动到你的源代码中,就在你班上另一个出口的下方。

Hi,这对我来说仍然不起作用。我收到这个错误消息,显示您实例化按钮的代码。听起来不像是你在做的properly@IBActionfunc startButton(){}嗨,我刚刚更新了我的按钮代码,这样当你点击它时,它就会执行一些代码。如果我把它换成插座,它还能用吗?感谢到目前为止的帮助。@iAction func startButton(){gameOver=false counter=10 stopFuncs=false var\uUz=Timer.scheduledTimer(时间间隔:1.0,目标:self,选择器:#选择器(updateCounter),用户信息:nil,重复:true)}