如何在 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 中获取按钮的当前标题?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Tableview 单元格中获取 UIButton 的位置,并在 Swift 中添加目标?
如何在使用当前模式打开另一个视图控制器后设置导航项的标题 - Swift