iOS 10 Beta 使导航栏按钮和标题在 pushViewController 上消失

标签 ios objective-c uinavigationcontroller uinavigationbar ios10

编辑:请在此处观看我的问题视频: https://www.dropbox.com/sh/lzgs9mahx5mea13/AADLYfLQix7MDleDN1ER81qVa?dl=0

我在应用商店中有一个应用在 iOS 9 上运行得很好。

但是在 iOS 10 上(在最新测试版的 iPhone 6s 设备上测试),当主视图 Controller 上的单元格被选中并“推送”详细 View 时,我的导航栏的标题和导航栏按钮消失了。

只有后退按钮可见。

即使我通过单击返回按钮或向后滑动返回到主页面,它们也不会返回。弹出后,连“大师”的标题和栏按钮都不见了。我不知道如何解决这个问题,因为没有错误。

在我的代码中,我没有将导航栏隐藏在任何地方,也没有对导航 Controller 做任何花哨的事情。

来自 View 层次结构指导器的屏幕截图: enter image description here

请注意标题和我的右侧栏按钮是如何位于其他几个 View 后面的。后退按钮在最前面。这表明按钮和标题没有隐藏,它们被 3 个额外的 View 覆盖:UIVisualEffectView、_UIVisualEffectBackdropView 和 _UIVIsualEffectFilterView

同样在视频中,您会注意到,如果我向后轻扫一半,然后取消轻扫,栏按钮就会返回。但标题没有。

enter image description here

enter image description here

回到 master 之后,注意 master 的导航栏内容被另外 2 个私有(private)类 View 覆盖: enter image description here

我以编程方式推送细节: 相关代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];

    PlaylistDetailViewController *pdvc = (PlaylistDetailViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"PlaylistDetailViewController"];
    pdvc.indexPath=indexPath;
    [self.navigationController pushViewController:pdvc animated:YES];
}

最佳答案

我也遇到了这个问题,目前所有建议的解决方案都是:

  1. 太复杂了
  2. 没用

最后我发现这是因为iOS10更新了UINavigationBar的绘制周期导致的。

为了解决这个问题,我必须用以下方法修复它:

self.navigationController.navigationBarHidden = YES;
self.navigationController.navigationBarHidden = NO;

它基本上是触发导航栏重绘。

他们怎么能推出一个破坏如此重要的东西的新版本操作系统,这仍然很烦人。

关于iOS 10 Beta 使导航栏按钮和标题在 pushViewController 上消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39212074/

相关文章:

iphone - iOS - UINavigationController 添加多个正确的项目?

ios - 从异步函数中提取数据以返回 UITable

ios - Xcode 8 - 自动布局问题

ios - 向导航栏添加事件指示器

iphone - 在 iPhone 中播放透明的 MOV 文件

objective-c - 在我无法重新编译的框架的运行时找到部署目标

ios JASidePanels 使 UINavigationController 成为 centerViewController

ios - 在用户输入凭据之前取消了 UIWebView 中的基本身份验证

ios - 应用引擎响应大小各不相同

objective-c - 使用核心数据的长时间运行的前台操作的最佳实践?