自定义UiTableViewCell上的长按PerformSegue

也许这个问题已经被问了几次,但还是找不到。我是个新手。

我有一个带有自定义UITableViewCell的UITableView。在单元格中有3个不同的标签。我在自定义单元格上添加了手势识别器,以便在标签上长时间按下时:- label 1应显示另一个UiViewController - label 2应执行呼叫- label 3应创建邮件

对于标签2和3,我没有问题

但是如何执行segue来打开视图控制器呢?

这是故事板

?

?

这是自定义的tableviewcell

import UIKit
import MessageUI

class OfficeCell: UITableViewCell, MFMailComposeViewControllerDelegate {

    @IBOutlet weak var lbOffice: UILabel!
    @IBOutlet weak var lbAddress: UILabel!
    @IBOutlet weak var lbPhone: UILabel!
    @IBOutlet weak var lbMail: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        self.setupLabelTap()
        // Configure the view for the selected state
    }

    func setupLabelTap() {

        let lbAddressTap = UILongPressGestureRecognizer(target: self, action: #selector(self.longPressReconizer(_:)))
        self.lbAddress.isUserInteractionEnabled = true
        self.lbAddress.addGestureRecognizer(lbAddressTap)

        let lbAddressTap2 = UILongPressGestureRecognizer(target: self, action: #selector(self.longPressReconizer(_:)))
        self.lbMail.isUserInteractionEnabled = true
        self.lbMail.addGestureRecognizer(lbAddressTap2)

        let lbAddressTap3 = UILongPressGestureRecognizer(target: self, action: #selector(self.longPressReconizer(_:)))
        self.lbPhone.isUserInteractionEnabled = true
        self.lbPhone.addGestureRecognizer(lbAddressTap3)
    }

    @objc func longPressReconizer(_ sender: UITapGestureRecognizer) {
        print("labelTapped")
        let etichetta :UILabel = sender.view as! UILabel
        print (etichetta.text!)
        switch etichetta.tag {
        case 0:

            self.performSegue(withIdentifier: "moveToMaps", sender: self)



        case 1:
            let telNumber = etichetta.text!.replacingOccurrences(of: " ", with: "")
            if let phoneCallURL = URL(string: "telprompt://\(telNumber)") {
                let application:UIApplication = UIApplication.shared
                if (application.canOpenURL(phoneCallURL)) {
                    application.open(phoneCallURL, options: [:], completionHandler: nil)
                }
            }
        case 2:

            if MFMailComposeViewController.canSendMail() {
                let mail = MFMailComposeViewController()
                mail.mailComposeDelegate = self
                mail.setToRecipients([etichetta.text!])
                mail.setSubject("Informazioni")

                self.window?.rootViewController?.present(mail, animated: true)
            } else {
                // show failure alert
            }

        default:
            print("default")
        }
    }

    func mailComposeController(_ controller:MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
        controller.dismiss(animated: true)
    }
}

但是Xcode给了我这个错误

“OfficeCell”类型的值没有成员“performSegue”

在self.performSegue上(withIdentifier:"moveToMaps",发送者: self)

如何实现我所需要的?

提前感谢Fabrizio

转载请注明出处:http://www.kldfzc.com/article/20230526/1164832.html