我正在尝试使用自定义segue,当单击按钮时,它会使 View 向右或向左“滚动”。我添加了一个如下所示的自定义类
class horizontalSegue : UIStoryboardSegue {
override func perform() {
var oldView = self.sourceViewController.view as UIView
var newView = self.destinationViewController.view as UIView
oldView.window?.insertSubview(newView, aboveSubview: oldView)
newView.center.x = oldView.center.x + oldView.frame.width
newView.center.y = oldView.center.y
UIView.animateWithDuration(0.6, animations: { newView.center = oldView.center }, completion: { finished in Void })
}
}
但问题是,在我继续进行一次之后,我无法继续回到我所离开的 View 。我认为这是因为我声明了 oldView 和 newView 的方式,应用程序没有更新哪个 View 是哪个 View ,所以当我尝试切换到第一个 View 时,它会切换回当前 View 。 如果我是正确的,我如何确保应用程序更新哪个 View ?
最佳答案
Apple 文档说:“无论您如何执行动画,最后,您都有责任将目标 View Controller (及其 View )安装在正确的位置,以便它可以处理事件。例如,如果要实现自定义模式转换,您可以使用快照图像执行动画,然后在最后调用presentModalViewController:animated:方法(禁用动画)以在源 View Controller 和目标 View Controller 之间设置适当的模式关系。 ”
也许你应该添加类似的内容
[self.navigationController pushViewController:vc animated:NO]
进入动画的完成处理程序?
关于swift - 第一次 Segue 后 Segue 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32728256/