在 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 中使用按钮更改标签的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何快速更改标签中的文本?

单击按钮时更改标签文本[关闭]

单击表格视图中的按钮时如何更改表格视图外部的标签文本

自定义标签栏的更多按钮

带有按钮的表视图,可根据用户输入更改标签

按下按钮更改标签文本