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

时间:2016-08-29 17:40:20

标签: ios objective-c uinavigationcontroller uinavigationbar ios10

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

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

然而,在iOS 10上(在具有最新测试版的设备iPhone 6s上测试),当选择主视图控制器上的单元格并且按下#34;时,我的导航栏的标题为#34;和导航栏按钮消失。

只有后退按钮可见。

即使我通过点击后退按钮或向后滑动回到主人身上,他们也不会回来。弹回后,即使是#"主人"标题和栏按钮消失了。我不知道如何解决这个问题,因为没有错误。

在我的代码中,我没有将导航栏隐藏在任何地方,也没有对导航控制器做任何想象。

来自视图层次结构insprector的屏幕截图: enter image description here

注意标题和我的右边栏按钮背后的其他一些视图。后退按钮位于最前面。这表明按钮和标题没有隐藏,它们被3个额外的视图覆盖:UIVisualEffectView,_UIVisualEffectBackdropView和_UIVIsualEffectFilterView

同样在视频中,您会注意到如果我向后滑动一半,则取消滑动,条形按钮会返回。但标题没有。

enter image description here

enter image description here

返回主人后,请注意主人的导航栏内容与其他2个私人课程视图重叠: 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];
}

7 个答案:

答案 0 :(得分:4)

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

  1. 太复杂了
  2. 不起作用
  3. 最后我发现这是因为iOS10中UINavigationBar的更新绘制周期造成的。

    为了解决这个问题,我必须解决这个问题:

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

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

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

答案 1 :(得分:3)

我遇到了同样的问题,但这是因为使用了添加模糊视图的自定义UINavigationBar。 iOS10看起来有些变化,当向导航栏添加标题或按钮时,它们将被添加到特定索引而不是附加到子视图堆栈。

我能够通过覆盖方法insertSubview:atIndex并确保blurView始终插入子视图堆栈的后面来克服此问题。

答案 2 :(得分:1)

我遇到的问题就像你现在面对的一样。我在代码及其工作中做了一些更改。在我的viewWillAppear中,在dispatch_async

中编写导航代码
dispatch_async(dispatch_get_main_queue(), ^{
   //BACK BUTTON CALLING
   //NAVIGATION TITLE 
});
[super viewWillAppear:animated];

这将帮助您在主队列的帮助下设置标题和后退按钮。

答案 3 :(得分:0)

实际上,我刚刚在一分钟前发现了。我正在使用github.com/gklka/GKFadeNavigationController中的自定义GKFadeNavigationController删除它,以解决问题。

答案 4 :(得分:0)

如果您使用LTNavigationBar库(https://github.com/ltebean/LTNavigationBar

,则同样存在问题

我的解决方法是更改​​UINavigationBar + Awesome.m中的代码:

<script>

答案 5 :(得分:0)

Swift 3.0解决方法:

子类UINavigationBar并覆盖 insertSubview(_ view:UIView,at index:Int)

 customButtons: {
    addRemoveResource: {
         text: 'refetchResources',
         click: function() {
         t.someParam=!t.someParam;
         $calendar.fullCalendar('refetchResources');
        }
  }

答案 6 :(得分:-1)

我为自己的工作找到了一份宣言。创建一个视图(viewBackground),其中包含符合导航栏的所有图像和颜色,然后将其转换为图像并将其用作背景。

git push --tags