【问题标题】:How to get the current Title of a button in Swift?如何在 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
        }
    }
}

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

【问题讨论】:

    标签: swift


    【解决方案1】:

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

    sender.titleLabel?.text
    

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

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

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

    sender.currentTitle
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-15
        • 2020-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多