编辑:请在此处观看我的问题视频: https://www.dropbox.com/sh/lzgs9mahx5mea13/AADLYfLQix7MDleDN1ER81qVa?dl=0
我在应用商店中有一个应用在 iOS 9 上运行得很好。
但是在 iOS 10 上(在最新测试版的 iPhone 6s 设备上测试),当主视图 Controller 上的单元格被选中并“推送”详细 View 时,我的导航栏的标题和导航栏按钮消失了。
只有后退按钮可见。
即使我通过单击返回按钮或向后滑动返回到主页面,它们也不会返回。弹出后,连“大师”的标题和栏按钮都不见了。我不知道如何解决这个问题,因为没有错误。
在我的代码中,我没有将导航栏隐藏在任何地方,也没有对导航 Controller 做任何花哨的事情。
请注意标题和我的右侧栏按钮是如何位于其他几个 View 后面的。后退按钮在最前面。这表明按钮和标题没有隐藏,它们被 3 个额外的 View 覆盖:UIVisualEffectView、_UIVisualEffectBackdropView 和 _UIVIsualEffectFilterView
同样在视频中,您会注意到,如果我向后轻扫一半,然后取消轻扫,栏按钮就会返回。但标题没有。
回到 master 之后,注意 master 的导航栏内容被另外 2 个私有(private)类 View 覆盖:
我以编程方式推送细节: 相关代码:
-(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];
}
最佳答案
我也遇到了这个问题,目前所有建议的解决方案都是:
- 太复杂了
- 没用
最后我发现这是因为iOS10更新了UINavigationBar的绘制周期导致的。
为了解决这个问题,我必须用以下方法修复它:
self.navigationController.navigationBarHidden = YES;
self.navigationController.navigationBarHidden = NO;
它基本上是触发导航栏重绘。
他们怎么能推出一个破坏如此重要的东西的新版本操作系统,这仍然很烦人。
关于iOS 10 Beta 使导航栏按钮和标题在 pushViewController 上消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39212074/