我有一个 View 集合,我想在点击它们时执行相同的 segue。并且没有 View 执行任何 segue。
class ViewController: UIViewController {
@IBOutlet var categoryViews: [UIView]!
let tapGesture = UIGestureRecognizer(target: self, action: #selector(ViewController.move(tap:)))
override func viewDidLoad() {
super.viewDidLoad()
for category in (0..<categoryViews.count) {
categoryViews[category].addGestureRecognizer(tapGesture)
categoryViews[category].isUserInteractionEnabled = true
}
// Do any additional setup after loading the view.
}
@objc func move(tap: UIGestureRecognizer) {
performSegue(withIdentifier: "Animals", sender: nil)
}
}
最佳答案
UITapGestureRecognizer
的单个实例可以添加到单个 View 。
在您的代码中,因为您使用的是 UITapGestureRecognizer
的单个实例对于每个 View ,tapGesture
将仅添加到最后view
在 categoryViews
array
.
您需要创建不同的 UITapGestureRecognizer
每个实例 view
在 categoryViews
,即
class ViewController: UIViewController {
@IBOutlet var categoryViews: [UIView]!
override func viewDidLoad() {
super.viewDidLoad()
categoryViews.forEach {
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(move(tap:)))
$0.addGestureRecognizer(tapGesture)
$0.isUserInteractionEnabled = true
}
}
@objc func move(tap: UITapGestureRecognizer) {
performSegue(withIdentifier: "Animals", sender: nil)
}
}
关于swift - View 不执行 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56810329/