【问题标题】: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)

标签: swift


【解决方案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 谢谢你的观点,但我们认为有一些明显的先验知识可供操作。
猜你喜欢
  • 1970-01-01
  • 2014-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 2018-05-11
  • 2019-12-03
相关资源
最近更新 更多