我有一个UIView类,其中包含UILabel。我已经为UITapGestureRecognizer添加了一个UILabel,并且想要做一个performSegue以在UIViewController的点击上打开一个新的UILabel
问题是我不能在performSegue类中使用UIView

任何人都可以帮助在performSegue类中使用UIView吗?

我在标签上添加了轻按手势,

nameLabel.isUserInteractionEnabled = true

let tap = UITapGestureRecognizer(target: self, action: #selector(tapFunction))
tap.numberOfTapsRequired = 1
tap.numberOfTouchesRequired = 1
tap.isEnabled = true
nameLabel.addGestureRecognizer(tap)

现在在我的tapFunction中,
func tapFunction(sender:UITapGestureRecognizer) {
    print("tap working")
    self.performSegue(withIdentifier: "memberSegue", sender: self)
}

但我得到一个错误:

“类型为UIViewController的值没有成员performSegue”

因为它是一个UIView类。

最佳答案

您应该尝试从UIViews中分离出任何功能。最佳实践是您的UIViewControllers负责应用程序中的所有功能,而UIViews仅用于显示元素。因此,我建议您将nameLabel设置为UIView中的一个属性,以便在实例化UIViewController之后可以从UIView中访问它。然后,UIViewController中的代码应如下所示:

let yourView = new YourView()
let tap = UITapGestureRecognizer(target: self, action: #selector(tapFunction))
tap.numberOfTapsRequired = 1
tap.numberOfTouchesRequired = 1
tap.isEnabled = true
yourView.nameLabel.addGestureRecognizer(tap)

并且您将在tap()中拥有UIViewController函数。

关于ios - 如何在Swift 3的UIView类中使用performSegue,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42409141/

10-11 14:48