2

我的故事板中有三个 UIView,如何在不使用NavigationbarTab Bar的情况下通过类似动画的推送在它们之间导航?我在视图上有自定义按钮。按住 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.
4

2 回答 2

2

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

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

有几种方法可以在另一个 VC 之上呈现 VC,这取决于该 VC 是否也存在于您的 SB 上:

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”。

希望这可以帮助。

于 2013-03-06T14:28:57.690 回答
0

UINavigationController只有在父视图内部使用 a 时才支持推送动画。您可以将视图控制器嵌入到 IB 中的一个编辑->嵌入->导航控制器中,然后隐藏导航栏。这可能会提供您想要的功能。

于 2013-03-06T13:17:59.413 回答