[英]Swift 3 changing the title of a UIButton
我一直在網上瀏覽,但找不到解決我問題的方法。 我希望游戲結束后,“開始”按鈕的文本更改為“重新開始”。 如果需要任何其他信息,請告訴我。 謝謝,感謝您的幫助。 下面是我的代碼。
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)
}
}
您已經擁有一些標簽的IBOutlets
。
對於按鈕,您可能需要同時設置IBaction
和IBOutlet
。
IBOutlet
是一回事。 一個名詞。 它是對視圖對象的引用。
IBAction
是動詞。 一種行為。 當UIControl
發生任何事情(點擊按鈕,移動滑塊,更改分段控件上的選定值等)時,將調用該代碼。
IBaction
是在用戶與控件交互時調用的函數(對於按鈕,您幾乎總是將操作鏈接到.touchUpInside控件事件。)
用pinkButton
名稱來命名您的動作是一個壞主意,並導致混亂。 我建議將您的動作重命名為動詞,例如handlePinkButton
(或“ pinkButtonTapped”,但我更喜歡動作名稱為動詞。)
請注意,在重命名IBAction
和/或IBOutlet
,必須進入IB(IB = Interface Builder),選擇連接檢查器,將現在不正確的IBOutlet / IBAction刪除,然后將對象中的Control-Drag拖動到更新的插座/動作。
如果不這樣做,那么在運行時將導致非常混亂的崩潰:
在代碼中重命名IBOutlets
而不在IB中更改它們時,在嘗試加載視圖時出現錯誤“該類不符合密鑰old_outlet_name的鍵值編碼要求”(其中“ old_outlet_name”將是插座的舊名稱。)。情節提要中的控制器。 重命名動作)
當您嘗試點擊按鈕(或觸發其他控件的動作)時,在代碼中重命名IBActions
而不在IB中更改它們的情況下,會出現錯誤“無法識別的選擇器發送到實例big_hex_number”。
您應該在主編輯器中打開情節提要,在輔助編輯器中打開源代碼,然后從IB中的按鈕將控件拖到班級頂部其他插座下的源代碼中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.