我正在使用 iOS 5 SDK 创建一个应用程序。我设法使用 Storyboard 的 Segues 推送视图,但我找不到弹出当前视图并返回前一个视图的正确方法。
我没有使用任何导航控制器(该应用程序没有任何顶部或底部栏)。
我不认为使用模态或以其他方式推送 segue 将是解决方案,因为它实例化了一个新控制器。
我是否必须使用带有相反动画的自定义 Segue 并在最后删除视图?或者,还有更好的方法 ?
我正在使用 iOS 5 SDK 创建一个应用程序。我设法使用 Storyboard 的 Segues 推送视图,但我找不到弹出当前视图并返回前一个视图的正确方法。
我没有使用任何导航控制器(该应用程序没有任何顶部或底部栏)。
我不认为使用模态或以其他方式推送 segue 将是解决方案,因为它实例化了一个新控制器。
我是否必须使用带有相反动画的自定义 Segue 并在最后删除视图?或者,还有更好的方法 ?
iOS 5 中的情节提要不提供从 segue 返回的“无代码”方式——这是您需要自己实现的东西。
如果您使用“push”segue(需要导航控制器),请使用导航控制器的popViewControllerAnimated:
方法撤消最后一个 push segue。(或其他撤消更多操作的方法;请参阅UINavigationController
文档。)
如果您使用“模态”segues,请调用dismissViewControllerAnimated:completion:
呈现当前视图控制器的视图控制器(您可以从其presentingViewController
属性中获取)。
更新:在 iOS 6 及更高版本中,在情节提要中“返回”有展开转场。它仍然不是无代码解决方案——也不应该是这样,因为您需要能够从模态视图控制器中区分“完成”和“取消”退出。但它确实可以让您将应用程序的更多语义流放入情节提要中。Apple 有一份技术说明对它们进行了详细描述,它们也包含在WWDC 2012 Session 407 的视频中。
您可以尝试[self dismissViewControllerAnimated:YES completion:nil];
从要关闭的控制器调用(无论控制器已被推送,还是模态显示)。
这是相关文档:UIViewController 类参考
呈现视图控制器负责关闭它呈现的视图控制器。如果您在呈现的视图控制器本身上调用此方法,它会自动将消息转发到呈现的视图控制器。
只是为了澄清。
在被推的班级里。只需连接以下内容,控制器和视图就会弹出。
[self.navigationController popViewControllerAnimated:YES];
在您的 stroyboard 上创建 Segue 类型“自定义”。这可以来自一个按钮。创建一个名为“popSegue”的新 UIStoryboardSegue 类在 popSegue.m 文件中添加以下内容;
-(void)perform{
UIViewController *sourceViewContreoller = [self sourceViewController];
[sourceViewContreoller.navigationController popViewControllerAnimated:YES];
}
- 在故事板编辑器中。
-选择segue并将Segue Class更改为“popSegue”
- 将标识符设置为“popSegue”
完毕!
您可以在整个项目中使用相同的“popSegue”类。
希望这可以帮助
我也在使用 Xcode 5,这就是它的完成方式。首先,在推送对方的视图代码文件中,在.h文件中创建一个IBAction方法,如下所示:
- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender;
Then in the .m file add this:
- (IBAction)exitToHere:(UIStoryboardPopoverSegue *)segue sender:(id)sender {
}
您可以在此方法中添加要执行的任何清理代码。接下来转到您的故事板并选择推送的视图。我假设您在视图上有某种按钮,用户点击以表示他已完成。单击该按钮,按住键并拖动到视图下方的绿色框,即出口。释放鼠标按钮但继续按住键。将出现一个弹出窗口,您的方法将显示在列表中。选择该方法。现在,当用户单击按钮时,视图将弹出,您将返回到启动方法。