道歉,如果这真的很明显,我错过了什么......
我有一个包含UIImageView的View Controller。当有人捏出来时,我想转到另一个视图,即他们之前所有图像的索引(这称为展开segue?)。
对于离散手势(点按,滑动..),我可以转到故事板,拖动手势,然后按住Ctrl键拖动以创建一个segue。
如何对连续手势做同样的事情?以某种方式编程?
答案 0 :(得分:2)
使用GestureRecognizers时,您可以为其分配目标。就像在这个PinchGestureRecognizer中一样:
let pinch = UIPinchGestureRecognizer(target: self, action: "handlePinch:")
在handlePinch() {}
内你可以像这样执行segue :(在故事板中创建segue之后)
performSegueWithIdentifier("mySegueID", sender: nil)
希望有所帮助:)
答案 1 :(得分:2)
<强> 1。展开赛段
在回答您的第一个问题时,是的,您可以使用展开segue。展开segue是一个正常的segue,除了它用于通过push,modal或popover segues向后移动。它甚至可以用于一次性移回多次推送,模态演示或弹出窗口。
这是一个很好的教程:http://spin.atomicobject.com/2014/10/25/ios-unwind-segues/
<强> 2。 UIPinchGestureRecogniser 强>
您可以使用scale
上的UIPinchGestureRecognizer
属性来确定何时执行展开segue。例如:
class MyViewController: UIViewController {
// We need to keep track of whether we asked to perform the segue,
// otherwise the segue could be called multiple times because
// UIPinchGestureRecognizer can be called more than once.
var isPerformingSegue = false
override func viewDidLoad() {
super.viewDidLoad()
let pinchRecogniser = UIPinchGestureRecognizer(target: self, action: Selector("pinched:"))
self.view.addGestureRecognizer(pinchRecogniser)
}
override func viewDidAppear(animated: Bool) {
isPerformingSegue = false
}
func pinched(recogniser: UIPinchGestureRecognizer) {
if recogniser.scale <= 0.2 && !isPerformingSegue {
self.performSegueWithIdentifier("unwindSegue", sender: self)
isPerformingSegue = true
}
}
}