【问题标题】:is there any way to popView controller in Storyboard?有什么办法可以在 Storyboard 中弹出视图控制器?
【发布时间】:2013-08-07 07:47:27
【问题描述】:
我在 storyboard 中有一个应用程序,并通过故事板本身的推送操作(不使用编码)连接到second view controller。
有什么方法可以在不编写任何代码和使用情节提要的情况下弹出到first view controller?
注意:通过使用navigation controller,我们将拥有back 按钮,但是如果在第二个视图控制器中创建了一个按钮,并且当我们点击该按钮时,我们应该弹出到第一个视图控制器。
【问题讨论】:
标签:
ios
uinavigationcontroller
storyboard
【解决方案1】:
故事板不提供无需编码即可从转场返回的方法,但这可以通过以下代码轻松完成:
[self.navigationController popToRootViewControllerAnimated:YES];
【解决方案2】:
Storyboards没有提供popViewController的“无代码”方式,需要自己实现。
如果你想弹出到你需要使用的第一个 viewController:
[self.navigationController popToRootViewControllerAnimated:YES];
【解决方案3】:
从 iOS6 开始,您也可以使用 UnwindSegue,尽管它确实需要一些代码)* 用于推送序列。有关UnwindSegues 的详细解释,请参阅SO post, scroll down to "In a Nutshell"
)*具体来说,你需要一个放松动作,例如
- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue
【解决方案4】:
涉及编写一次代码但之后可以在情节提要中用作 segue 而无需进一步实现的解决方案是某种 PopSegue 作为 UIStoryboardSegue 的子类。
@interface PopSegue : UIStoryboardSegue
如下覆盖 -perform 方法。
@implementation PopSegue
- (void)perform
{
[[self.sourceViewController navigationController] popViewControllerAnimated:YES];
}
@end
使用自定义 segue 进行反向导航并指定 PopSegue 类。