单击第一个屏幕上的按钮后,将向用户显示标签栏控制器中包含的视图控制器。视图控制器中有两个表视图,第一个是顶部静态表,另一个是下面的第二个表。标签栏控制器中的视图控制器不在“更多”显示内。如果我转到“更多”并选择一个视图控制器,则会显示视图,并按下顶部单元格。
如果我转到“更多”屏幕,单击编辑,并以任何方式移动视图控制器的顺序,通过“更多”显示正确显示控制器。离开“更多”部分后,不显示顶部表格单元格(顶部表格)。
对我而言,在UI或故事板中存在问题似乎是合理的,但是没有任何事情可以解决我的问题。我已尝试手动设置约束并使用建议的约束。
此示例项目位于https://github.com/propstm/NavigationStructureTest
答案 0 :(得分:3)
我只是更新了两个表VC中的约束,然后问题就不存在了。
答案 1 :(得分:2)
禁用大小类,并删除"垂直空间到顶部布局指南"的约束(top tableView),向超级视图添加引脚顶部空间可以解决问题。 也许这是Xcode的错误,请参阅this。
答案 2 :(得分:0)
我认为它与TabBarController提供的“更多”控制器有关,它具有自己的导航控制器,并且您的故事板设置为将边缘扩展到顶部条之外。
虽然你试图隐藏导航栏,但我认为它是在错误的地方完成的,只有当项目出现在“更多”控制器中时才需要。它当前实现的方式混淆了顶部布局指南,这似乎是假设有两个顶部栏,即使其中一个被隐藏。
我能够以两种方式修复您的演示项目。通过以下任一方式:
1)更新故事板并关闭标签栏上的“延伸边缘”(并将标签栏和顶部栏设置为不透明):
OR
2)简化viewWillAppear / Disappear和viewDidAppear / Disappear方法并在标签栏中隐藏导航栏更多控制器:
- (void)viewDidAppear:(BOOL)animated{
//self.navigationItem.backBarButtonItem.title = @"HOME";
self.tabBarController.title = @"Entity List";
//Pretty activity indicator
[self.topTableView reloadData];
}
- (void)viewWillAppear:(BOOL)animated {
if (self.navigationController == self.tabBarController.moreNavigationController) {
[self.tabBarController.navigationController setNavigationBarHidden:YES];
} else {
[self.navigationController setNavigationBarHidden:NO];
}
}
- (void)viewWillDisappear:(BOOL)animated {
[self.navigationController.navigationBar setHidden:NO];
}
- (void)viewDidDisappear:(BOOL)animated {
}
这可确保顶部导航正确显示,而不会弄乱布局指南。