我目前正面临着 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" 。
如果有人遇到过这个问题,我真的很感激一些帮助。
答案 0 :(得分:2)
按照:
转到viewController,然后点击NavigationItem,如下所示:
在右侧窗格中,更改"标题"如下:
将UIView添加到您的navigationBar,如下所示:
将UILabel添加到navigationItem,如下所示:
更改新添加的UILabel的帧,如下所示:
将UILabel的文本更改为"示例标题"并将UIView backgroundColor更改为clearColor。
我在Xcode8中制作了一个示例,请查看下面的GitHub链接:
答案 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 ...