视图未执行顺序

时间:2019-06-28 16:28:11

标签: swift xcode

我有一个视图集合,我希望在点击它们时可以执行相同的命令。而且没有视图执行任何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)
}


}

2 个答案:

答案 0 :(得分:1)

可以将UITapGestureRecognizer的单个实例添加到单个视图中。

在您的代码中,由于每个视图都使用UITapGestureRecognizer的单个实例,因此tapGesture仅添加到view { {1}}。

您需要为categoryViews中的每个array创建不同的UITapGestureRecognizer实例,即

view

答案 1 :(得分:0)

问题在于此代码无法实现您认为的目的:

FFHHIIJJ    true
UUURROOOR   true
HHEEPPDIDI  true
LLLQQMQMM   true
abaccb      true
abc         true
d           true
            true
IIREELO     false
PPGIUUUUS   false
HRTRDFF     false
HIYUDHDA    false
abbc        false
aabcc       false

您的class ViewController: UIViewController { let tapGesture = UIGestureRecognizer(target: self, action: #selector(ViewController.move(tap:))) 是实例属性声明,等号后是其初始化程序。但是您不能在实例属性初始化程序中谈论let tapGesture;尚无实例。因此,self被认为是 class 。因此,您的轻击手势识别器“有效”,但是self消息没有发送到您的ViewController实例;实际上,它被发送到空白区域。

要解决此问题,您可以在move存在时初始化tapGesture。例如:

self