gpt4 book ai didi

ios - 在模态转场(ViewController)中显示 UINavigationController?

转载 作者:行者123 更新时间:2023-11-29 13:22:54 26 4
gpt4 key购买 nike

我现在已经在这个问题上停留了 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com