我现在已经在这个问题上停留了 2 周多了!在我的项目中,我有 1 个 ViewController(slide) 我想同时启用横向和纵向模式。其余所有 Controller / View (幻灯片)我只想启用纵向模式。
棘手的部分是,我所指的“ViewController”连接到 NavigationControllers 和 TabBarControllers。请参阅下面的方案,其中我想要同时启用横向/纵向的 ViewController 被命名为:ReferredViewController。
TabBarController ----> NavigationController ----> FristViewController --(推送事件)--> ReferredViewController
到目前为止,我已尝试为 NavigationControllers 和 TabBarControllers 创建一个CATEGORY。但是由于我的 NavigationControllers 和 TabBarControllers 被放置在项目的最开始,这将为整个项目设置规则。我的 ReferredViewController 位于项目“ Storyboard”的末尾或中间。我曾尝试通过代码为单个 ReferredViewController 设置规则,但没有成功。
我最好的办法是将 FirstViewController 和 ReferredViewController 之间的事件从“push”更改为“modal”。 ReferredViewController 然后可以旋转纵向/横向,项目的其余部分被锁定在纵向。但是,正如您可能知道的那样,所有导航 (NavigationBar) 都将丢失,并且用户将卡在单张幻灯片上。
所以我尝试使用 ReferredViewController.m 文件中的以下代码示例启用 NavigationBar:
ShowTaskViewController *detailViewController = [[ShowTaskViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
navController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.navigationController presentModalViewController:navController animated:YES completion:nil];
[navController release];
[detailViewController release];
但是什么也没发生,我又回到原点了:哦。卧槽!
最佳答案
在这一行中:
[self.navigationController presentModalViewController:navController
animated:YES
completion:nil];
您正在混淆两个 UIViewController 实例方法:
- (void)presentViewController:(UIViewController *)viewControllerToPresent
animated:(BOOL)flag
completion:(void (^)(void))completion
- (void)presentModalViewController:(UIViewController *)modalViewController
animated:(BOOL)animated
其中第一个现在是标准方法,第二个方法在 ios6 中已弃用。
此外,呈现 View Controller 应该是自己(ReferredViewController),而不是自己的 navigationController。
您呈现的 View Controller 可以因此自行关闭
[[self presentingViewController] dismissViewControllerAnimated:YES
completion:(void (^)(void))completion];
但看看 fibnochi 的答案,它可能是您实现结果的更好方法。
关于ios - 在模态转场(ViewController)中显示 UINavigationController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13934131/