我有一个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/