如何在不使用导航栏或标签栏的情况下在故事板中的视图之间导航

时间:2013-03-06 13:15:08

标签: uiviewcontroller uinavigationcontroller uitabbarcontroller uistoryboard segue

我的故事板中有三个UIViews,如何在不使用导航栏标签栏的情况下使用推送像动画一样在它们之间导航?我在视图上有自定义按钮。 按住Control键并单击并拖动不适用于此错误:

Terminating app due to uncaught exception 'NSGenericException', reason: 'Push segues can
only be used when the source controller is managed by an instance of UINavigationController.

2 个答案:

答案 0 :(得分:2)

您可以在不使用导航控制器的情况下显示/关闭VC。

请注意术语:push / pop用于导航控制器堆栈上的VC,其他VC(而不是导航控制器堆栈)上的VC用于提示/关闭。

有几种方法可以在另一个VC上提供VC,这取决于您的SB上是否存在VC:

1-如果您的IB中不存在VC并且您只是以编程方式创建和呈现VC,则可以执行以下操作:

 MyUIViewControllerSubclass *myLittleSubclass=[[MyUIViewControllerSubclass alloc]init];
myLittleSubclass.view.frame=self.view.frame; //this is for exmaple only
[self presentViewController:myLittleSubclass animated:YES completion:nil];

通过上述内容,您显然必须首先将MyUIViewControllerSubclass Objective C类添加到您的项目中(使用添加文件)并将其导入到您放置上述代码的任何类中。

稍后将其解雇,您可以使用MyUIViewControllerSubclass类中的以下代码。

 [self.parentViewController dismissViewControllerAnimated:YES completion:nil];

2-如果您已经将MyUIViewControllerSubclass Objective C类添加到您的项目中(使用添加文件)但您打算使用IB来设计它并且您已在IB中添加了VC并将其在IB中的类更改为MyUIViewControllerSubclass,您可以使用此代码:

mySubclass *myLittleSubclass=[self.storyboard instantiateViewControllerWithIdentifier:@"theVC"];
[self presentViewController:myLittleSubclass animated:YES completion:nil];

您可以解雇上述内容。 确保单击SB中的VC并在身份检查器中,将SB ID设置为“theVC”并选中“使用SB ID”。

希望这有帮助。

答案 1 :(得分:0)

仅在父视图中使用UINavigationController时才支持推送动画。您可以将视图控制器嵌入到IB中的一个 edit->嵌入 - >导航控制器中,并隐藏导航栏。这可以提供您想要的功能。