iOS 10 - 隐藏了视图控制器/导航栏标题

时间:2016-10-03 09:50:25

标签: ios objective-c navigationbar pushviewcontroller titlebar

我目前正面临着 iOS 10 的奇怪行为。

事实上,一切都运行良好,但自从我更新到 xCode 8 并开始在 iOS 10 上测试我的应用程序后,出现了很多问题。

例如,我的所有导航栏标题都不再显示。

更确切地说,当我使用菜单导航我的应用程序时,每次切换到不同的视图时,都没有标题,但是当我按下后退按钮时,我可以在之前简单地看到它过渡到另一种观点。
我不理解这种新行为,我没有改变代码中的任何内容,当我在iOS 9或更低版本上启动应用程序时,一切正常。

我尝试在 prepareForSegue 中的 ViewWillAppear / ViewDidLoad 中设置标题,但没有任何效果。

if ([segue.identifier isEqualToString:kMy_Segue]) {
    MyViewController* destinationVC = segue.destinationViewController;
    [destinationVC setTitle:@"MyTitle"];
}

我觉得推送的导航控制器有一些变化,或者标题项与导航栏本身的索引不同,因为当我浏览菜单中的子视图时,标题仅在我按下时出现。

例如,我的菜单中有一个名为" World" 的类别。 当我点击它时,我希望子视图的标题是" World" ,但不会显示任何内容。然后,我将所有大陆列为" Africa" " Europe" " Asia&#34 ; 等...... 当我点击非洲时,我希望下一个标题是"非洲" 对吗? 再一次,没有显示任何内容但是如果我按下后退按钮并返回各大洲列表,则会出现标题" World"

如果有人遇到过这个问题,我真的很感激一些帮助。

3 个答案:

答案 0 :(得分:2)

按照:

解-1

转到viewController,然后点击NavigationItem,如下所示:

enter image description here

在右侧窗格中,更改"标题"如下:

enter image description here

解-2

将UIView添加到您的navigationBar,如下所示:

enter image description here

将UILabel添加到navigationItem,如下所示:

enter image description here

更改新添加的UILabel的帧,如下所示:

enter image description here

将UILabel的文本更改为"示例标题"并将UIView backgroundColor更改为clearColor。

我在Xcode8中制作了一个示例,请查看下面的GitHub链接:

https://github.com/k-sathireddy/NavigationItemSample

答案 1 :(得分:0)

您是否尝试将导航项添加到导航栏?您正在使用Storyboard进行此设计。

答案 2 :(得分:0)

我找到了解决问题的方法。这真的很奇怪。

我在主页的导航栏上有一个淡入淡出动画。 这是一个滚动视图,所以当我向下滚动时,我仍然可以看到标题和导航栏。

在iOS< 10,淡入淡出动画只改变背景颜色和透明度。但是当我在iOS 10上启动应用程序时,淡入淡出效果会隐藏所有内容,菜单图标,标题,一切。我相信Apple改变了导航栏项目的结构。

此外,当我在淡入淡出动画进行时点击菜单图标导航我的应用程序时,我可以看到标题和导航栏项目处于“淡入淡出效果”下,甚至在下一个ViewControllers的标题之后我的导航。

所以它正常工作,只是菜单图标,标题等隐藏在导航栏上。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    UIColor * color = [Constants backgroundColor];
    CGFloat offsetY = scrollView.contentOffset.y;
    CGFloat threshold = 250;
    if (offsetY > threshold) {
        [self.navigationController.navigationBar lt_setBackgroundColor:[color colorWithAlphaComponent:1]];
    } else {
        CGFloat alpha =  offsetY / threshold;
        [self.navigationController.navigationBar lt_setBackgroundColor:[color colorWithAlphaComponent:alpha]];
    }
}

我想这个问题来自我用来动态更改NavigationBar外观的库LTNavigationBar ...