我正在尝试使用自定义的segue,这会使视图“滚动”。单击按钮时向右或向左。我添加了一个看起来像这样的自定义类
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 })
}
}
但问题是,在我离开一次之后,我无法回到我所观察到的观点。我认为它是因为我已经声明了oldView和newView的方式,应用程序不更新哪个视图,所以当我尝试切换到第一个视图时,它会回到当前视图。 如果我是正确的,我如何确保应用程序更新哪个视图?
答案 0 :(得分:0)
Apple文档说:"无论您如何执行动画,最后都要负责在正确的位置安装目标视图控制器(及其视图),以便它可以处理事件。例如,如果要实现自定义模式转换,则可以使用快照图像执行动画,然后在最后调用presentModalViewController:animated:方法(禁用动画)以在源和目标之间设置适当的模态关系查看控制器。"
可能你应该添加像
这样的东西[self.navigationController pushViewController:vc animated:NO]
进入动画的完成处理程序?