我正在使用iOS 5 SDK创建应用程序。我成功地使用Storyboard的Segues推送了视图,但我找不到正确的方法来弹出当前视图并返回到上一个视图。
我没有使用任何navigationController(应用程序没有任何顶部或底部栏)。
我认为使用模态或向另一个方向推送segue不是解决方案,因为它会实例化一个新的控制器。
我需要使用相反的动画和删除视图的自定义Segue吗?还是有更好的方式?
我正在使用iOS 5 SDK创建应用程序。我成功地使用Storyboard的Segues推送了视图,但我找不到正确的方法来弹出当前视图并返回到上一个视图。
我没有使用任何navigationController(应用程序没有任何顶部或底部栏)。
我认为使用模态或向另一个方向推送segue不是解决方案,因为它会实例化一个新的控制器。
我需要使用相反的动画和删除视图的自定义Segue吗?还是有更好的方式?
iOS 5中的故事板(Storyboards)没有提供“无代码”返回Segue的功能--您需要自己实现。
如果使用“push” Segue(需要导航控制器),请使用导航控制器的popViewControllerAnimated:
方法来撤消上一个push segue。(或使用其他方法撤消更多;请参阅UINavigationController
文档。)
如果使用“modal” Segue,请在呈现当前视图控制器的视图控制器上调用dismissViewControllerAnimated:completion:
方法(可以从其presentingViewController
属性获取该视图控制器)。
更新:在iOS 6及更高版本中,有可回退Segue的选项。仍然不是无代码解决方案--也不应该是,因为您需要能够区分模态视图控制器的“完成”和“取消”退出。但它确实让您将应用程序的语义流程更多地放入故事板中。苹果公司有一份技术说明文档详细描述了此内容,并且还在WWDC 2012 Session 407的视频中介绍了这些内容。
[self dismissViewControllerAnimated:YES completion:nil];
(无论控制器是已推送还是以模态方式显示)。呈现视图控制器负责关闭它呈现的视图控制器。如果你在被呈现的视图控制器本身上调用此方法,它会自动将消息转发给呈现视图控制器。
只是为了澄清。
在被推送的类中,只需连接以下内容,控制器和视图将被弹出。
[self.navigationController popViewControllerAnimated:YES];
-(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 {
}
您可以在此方法中添加任何清理代码。接下来,转到您的故事板并选择推送视图。我假设您的视图上有某种按钮,用户点击该按钮以表示完成。单击该按钮,按住 键并拖动到视图下方的绿色框中,即Exit。释放鼠标按钮但继续按住 键。将出现弹出窗口,并显示您的方法列表。选择该方法。现在,当用户单击该按钮时,视图将弹出,并将返回到起始方法。