呈现 UIViewController 后 iOS UINavigationBar 损坏
Posted
技术标签:
【中文标题】呈现 UIViewController 后 iOS UINavigationBar 损坏【英文标题】:iOS UINavigationBar Becoming Corrupted After Presenting UIViewController 【发布时间】:2015-03-19 04:21:31 【问题描述】:在我的应用程序中,我有一个 UITabBarController
,其中有 4 个标签,每个标签中都有 UINavigationController
。当用户从表中选择某些内容时,我从UINavigationController
之一的根 VC 推送一个新的UIViewController
。从该详细视图可以像这样呈现模态视图:
PlayerViewController *playerViewController = [[PlayerViewController alloc] initWithNibName:@"PlayerViewController" bundle:nil];
playerViewController.videoURL = videoURL;
[self presentViewController:playerViewController animated:YES completion:nil];
如果没有显示该模态视图,则应用程序功能正常,但如果我从推送的IUViewController
中显示该模态视图,那么当弹出该IUViewController
时,UINavigationBar
会损坏并且下一次视图是推我明白了:
nested push animation can result in corrupted UINavigationBar
我已经检查以确保详细视图没有被多次推送,但我不知道是什么原因造成的。
【问题讨论】:
你试过用pushViewController
代替presentViewController
吗?出现问题了吗?
Umang Bista,我刚刚尝试过,确实有效,但是我需要以模态方式呈现此视图,以便标签和导航栏不再可见。
您使用的是哪个版本的 ios?模拟器还是设备? Found this link 和 this from RayWenderlich
你是在没有先关闭模态视图控制器的情况下弹出视图控制器吗?
rdelmar 不,每个步骤都由用户触发。首先关闭模态视图,然后按详细视图上的后退按钮。
【参考方案1】:
在呈现 ViewController 之前尝试设置 playerViewController.modalPresentationStyle = .CurrentContext
【讨论】:
以上是关于呈现 UIViewController 后 iOS UINavigationBar 损坏的主要内容,如果未能解决你的问题,请参考以下文章
Swift - iOS 9:如何在 iOS 9 中呈现具有自定义大小的 UIViewController? [复制]
当键盘出现在 iOS8 的 iPad 上时,向上移动模态呈现的 UIViewController
如何使用完成按钮呈现包含 iOS App Store 的 UIViewController
如何以编程方式从 iOS Swift 3 中的 XIB 推送和呈现给 UIViewController