如何在 Swift 中获取按钮的当前标题?

Posted

技术标签:

【中文标题】如何在 Swift 中获取按钮的当前标题?【英文标题】:How to get the current Title of a button in Swift? 【发布时间】:2021-11-28 16:12:23 【问题描述】:

我做错了什么?

我收到此错误:

let letterString = sender.title(for: .normal)! // 线程 1:致命错误:在展开可选值时意外发现 nil

当我试图快速获取按钮的标题时,如下所示:

import UIKit

class ViewController: UIViewController 
    
    // My IBOutlets
    @IBOutlet var treeImageView: UIImageView!
    @IBOutlet var correctWordLabel: UILabel!
    @IBOutlet var scoreLabel: UILabel!
    
    // My Outlet Collection
    @IBOutlet var letterButtons: [UIButton]!
    
    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        // Begin the round.
        newRound()
        
    
    
    var listOfWords = ["estufa", "nevera", "computadora", "empanada", "chuleta", "camarones", "brincar", "correr", "caminar", "tigre", "jirafa", "mono", "kisseemmee", "Tampa", "Orlando"]
    let incorrectMovesAllowed = 7
    let totalWins = 0
    let totalLosses = 0
    
    
    // My IBActions
    @IBAction func letterButtonPressed(_ sender: UIButton) 
        sender.isEnabled = false


        let letterString = sender.title(for: .normal)!  // Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value


        let letter = Character(letterString.lowercased())
        currentGame.playerGuessed(letter: letter)
        updateUI()
    
    
    var currentGame: Game!
    
    func newRound() 
        let newWord = listOfWords.removeFirst()
        currentGame = Game(word: newWord, incorrectMovesRemaining: incorrectMovesAllowed, guessedLetters: [])
        updateUI()
    
    
    func updateUI() 
        scoreLabel.text = "Wins: \(totalWins), Losses: \(totalLosses)"
        treeImageView.image = UIImage(named: "Tree \(currentGame.incorrectMovesRemaining)")
    

// Game.swift 文件代码:

import Foundation

struct Game 
    var word: String
    var incorrectMovesRemaining: Int
    var guessedLetters: [Character]
    
    mutating func playerGuessed(letter: Character) 
        guessedLetters.append(letter)
        if !word.contains(letter) 
            incorrectMovesRemaining -= 1
        
    

我是新手。这是我的第一个程序。如果您编写解决方案,我将不胜感激。

【问题讨论】:

【参考方案1】:

您可以使用titleLabel 属性获取UIButton 的标题。检查下面的代码。

sender.titleLabel?.text

由于上面的代码返回的是可选的,你可以使用可选链来安全地获取字符串

if let titleLabel = sender.titleLabel 
    let title = titleLabel.text

您还可以使用currentTitle 属性,如下所示。

sender.currentTitle

【讨论】:

【参考方案2】:

您可以使用: 发件人.titleLabel.text

【讨论】:

以上是关于如何在 Swift 中获取按钮的当前标题?的主要内容,如果未能解决你的问题,请参考以下文章

当用户在swift中按下注销按钮时如何停止更新位置

如何使用代码在 Swift iOS8 中模拟按钮按下

如何在 Tableview 单元格中获取 UIButton 的位置,并在 Swift 中添加目标?

如何在使用当前模式打开另一个视图控制器后设置导航项的标题 - Swift

如何在 Swift 的 Firebase Firestore 中获取当前文档 ID?

如何在 Swift 中获取另一个时区的当前日期和时间?