如何在Swift 3中制作可点击的UILabel?

时间:2017-12-05 10:41:14

标签: ios swift uilabel

我尝试按照以下代码制作可点击的UILabel

class ViewNotificationsDetails: UIViewController {    
   @IBOutlet weak var back: UILabel!

      override func viewDidLoad() {
          super.viewDidLoad()

          let tap = UITapGestureRecognizer(target: self, action: #selector(ViewNotificationsDetails.tapFunction))
          back.isUserInteractionEnabled = true
          back.addGestureRecognizer(tap)
      }

      @objc func tapFunction(sender:UITapGestureRecognizer) {
          print("tap working")
      } 
}

但是在执行代码时,我收到了错误 - >

  

线程1:致命错误:在展开时出乎意料地发现nil   该行的可选值" back.isUserInteractionEnabled = true"。

可能是什么问题?

4 个答案:

答案 0 :(得分:0)

使用back.userInteractionEnabled = true 你做错了,因为isUserInteractionEnabled。

答案 1 :(得分:0)

问题在于您的标签内存分配。您已创建IBOutlet标签,但未将其与Storyboard / XIB视图控制器中的Interface连接。

  

转到界面生成器:(故事板/ XIB)查看控制器▶选择'连接检查器' ▶连接标签插座'返回'使用Label接口元素

enter image description here

答案 2 :(得分:0)

试试这段代码,与我合作

class ViewController: UIViewController {
@IBOutlet weak var cliclableLable: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapFunction))
    cliclableLable.isUserInteractionEnabled = true
    cliclableLable.addGestureRecognizer(tap)
}

func tapFunction(sender:UITapGestureRecognizer) {
    print("tap working")
}

}

也不要忘记将您的标签与代码链接

答案 3 :(得分:0)

If you are trying to achieve using storyboard, here is a simple way.

在标签上添加一个UIButton元素。清除按钮占位符,使按钮约束等于标签,即相等的高度,相等的宽度,顶部,底部。在上图中,标签在扩展文本时仅尾随固定。因此按钮尾随应该是尾随到标签。在以下上下文中,该按钮没有前导约束。最后创建一个IBAction并编写代码以完成任务。