按钮单击时动态标签更改

Posted

技术标签:

【中文标题】按钮单击时动态标签更改【英文标题】:Dynamic label change on button click 【发布时间】:2017-06-10 06:24:19 【问题描述】:

我正在尝试使用以下代码更改标签文本:

class ViewController: UIViewController 

    @IBAction func buttontobepressed(_sender: Any)
    
       displayMessage.text?="button pressed"  
    

    @IBOutlet  weak var displayMessage: UILabel!

当我尝试运行它时,它给了我一个异常:

$ ibc++abi.dylib: 以 NSException$ 类型的未捕获异常终止

完整日志:

2017-06-10 12:07:14.672 blabby[4334:781388] -[blabby.ViewController buttontobepressed:]:无法识别的选择器发送到实例 0x7bf54fe0 2017-06-10 12:07:14.679 blabby[4334 :781388] *由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[blabby.ViewController buttontobepressed:]:无法识别的选择器发送到实例 0x7bf54fe0”libc++abi.dylib:以未捕获的异常类型终止NSException (lldb) **

【问题讨论】:

去掉text属性后面的? 写成displayMessage.text = "button pressed" 'NSInvalidArgumentException' 是错误消息显示...未捕获的异常。 您的标签插座连接了吗?还添加完整的错误 **2017-06-10 12:07:14.672 blabby[4334:781388] -[blabby.ViewController buttontobepressed:]:无法识别的选择器发送到实例 0x7bf54fe0 2017-06-10 12:07: 14.679 blabby[4334:781388] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[blabby.ViewController buttontobepressed:]:无法识别的选择器发送到实例 0x7bf54fe0”libc++abi.dylib:以未捕获的异常终止NSException 类型 (lldb) ** _sender之间添加空格,比如buttontobepressed(_ sender: Any) 【参考方案1】:

在动作方法中使用Any类的正确方法是在执行动作时始终检查适当的类,见下文。

@IBAction func buttontobepressed(_ sender: Any)

    // checking if sender is as object of UIButton class
    if sender is UIButton
        self.displayMessage.text = "button pressed"    
    

注意:要在程序中正确使用包括UILabel在内的任何UI组件,您必须在声明后使用情节提要连接其IBOutlet,否则会出现运行时错误。

【讨论】:

@Mozahler 谢谢你的观点,但我们认为有一些明显的先验知识可供操作。

以上是关于按钮单击时动态标签更改的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kivy 中动态更改标签背景颜色

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

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

iphone在按钮单击时更改标签栏项目

更改按钮上的标签文本单击列表视图项内

如何使用标签属性删除动态添加的控件