在 iOS 中使用按钮更改标签的文本
Posted
技术标签:
【中文标题】在 iOS 中使用按钮更改标签的文本【英文标题】:Change the text of a label with a button in iOS 【发布时间】:2017-09-07 01:09:54 【问题描述】:首先,让我说我是 Swift 和 Xcode 的新手。我有一个显示一些文本的标签,我希望在按下按钮时更改该文本。
这是 UIViewController 中的代码:
var txt = "Hey"
@IBOutlet weak var Text: UILabel!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
showText()
func showText()
Text.text = txt
@IBAction func Button(_ sender: Any)
txt = "Hello"
按钮和标签正确链接到它们的 main.storyboard 对应项。当我运行它并按下按钮时,文本不会改变。
【问题讨论】:
只需在您的按钮 IBAction 中调用showText()
。顺便说一句,Swift 约定以小写字母开头命名您的变量、函数、IBOutlets 和 IBActions。
在设置txt
后在Button
中调用showText()
。 viewDidLoad()
只在创建 ViewController 时调用一次。
是的,有效!
抱歉,您的问题没有解决。
【参考方案1】:
viewDidLoad()
仅在创建 ViewController 时调用一次。 showText()
需要在设置txt
后调用才能显示。一种实现自动化的方法是在txt
中添加一个属性观察器,以便在更新txt
时调用showText()
:
var txt = "Hey"
didSet
showText()
【讨论】:
【参考方案2】:我要补充一点,让您的showText()
方法将实际文本显示为参数,而不是依赖于某些内部状态,这样会更加灵活,也许更优雅。 strong>(属性txt: String
的值,在调用站点上并不立即显示)来完成其任务:
@IBOutlet weak var textLabel: UILabel!
func showText(_ text: String)
self.textLabelabel?.text = text
// (optional chaining to avoid crash if accidentally
// called before viewDidLoad())
@IBAction func buttonAction(_ sender: Any)
self.showText("Hello") // From here it is clear what text will be shown
【讨论】:
【参考方案3】:如下更改您的代码
var txt = "Hey"
@IBOutlet weak var Text: UILabel!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
showText()
func showText()
Text.text = txt
@IBAction func Button(_ sender: UIButton)
txt = "Hello"
showText()
【讨论】:
【参考方案4】:使用按钮更改标签文本只需将标签中的文本传递;
//Outlets
@IBOutlet weak var firstLabel: UILabel!
@IBOutlet weak var secondLabel: UILabel!
//Button Action
@IBAction func textChabge(_ sender: Any)
firstLabel.text = "newText"
secondLabel.text = "newText"
【讨论】:
【参考方案5】:只需像这样更改您的 IBAction。
@IBAction func Button(_ sender: Any)
txt = "Hello"
showText()
【讨论】:
以上是关于在 iOS 中使用按钮更改标签的文本的主要内容,如果未能解决你的问题,请参考以下文章