代码之家  ›  专栏  ›  技术社区  ›  NelbeDG

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

  •  1
  • NelbeDG  · 技术社区  · 7 年前

    我正在尝试制作一个可点击的 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 回复  |  直到 7 年前
        1
  •  1
  •   Ahmad Taalab    7 年前

    试试这个代码,我觉得很好用

    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")
    }
    

    }

    另外,不要忘记将标签与代码联系起来

        2
  •  0
  •   Krunal    7 年前

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

    转到界面生成器:(情节提要/XIB)视图控制器选择“连接检查器”连接标签插座“back”和标签界面元素

    enter image description here

        3
  •  0
  •   Syed Sadrul Ullah Sahad    7 年前

    使用 back.userInteractionEnabled = true 您在isUserInteractionEnabled时做错了。

        4
  •  0
  •   vilas deshmukh    4 年前

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

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