按钮单击时动态标签更改
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 谢谢你的观点,但我们认为有一些明显的先验知识可供操作。以上是关于按钮单击时动态标签更改的主要内容,如果未能解决你的问题,请参考以下文章