UINavigationBar下的多个UITableView
Posted
技术标签:
【中文标题】UINavigationBar下的多个UITableView【英文标题】:Multiple UITableViews under UINavigationBar 【发布时间】:2013-11-21 14:59:57 【问题描述】:我正在使用带有部署目标 5.1 的 ios 7 使用 Storyboards 开发 iOS 应用程序。
我在一个视图控制器中有 4 个UITableView
s,它们都有 1/3 的宽度和 100% 的屏幕高度。一个总是在屏幕外(他们不时地左右移动)。我希望它们显示在UINavigationController
提供的UINavigationBar
下。
我已经在 Storyboard 中设置了所有内容,但是 XCode 仅对最左侧的表格进行了格式化(格式化是指UITableView
的内容从UINavigationBar
的末尾开始。其他表格开始在UINavigationBar
下显示内容。
我没有任何设置表格的代码,我的视图控制器中只有UITableViewControllerDataSource
和UITableViewControllerDelegate
方法。
正如您在屏幕截图中看到的那样,它甚至没有显示原型表格单元格,因为它们位于导航栏下方。
如何设置此权限(在 Storyboard 中或以编程方式)?
我希望内容显示在导航栏下方,但也希望从导航栏下方开始,并且只有在向下滚动时才会进入。
【问题讨论】:
可以发布一些屏幕截图吗? 屏幕截图应该是故事板和正在运行的应用程序。另外,你有什么代码(如果有的话)来设置视图和滚动它们? 图片是这样的,ios7之前的版本也是这样的? @Ilario 不,在 iOS 【参考方案1】:看到这个问题只有ios7,我可以尝试提出一个选项:
-第一:
单击包含 UITableView 的 UIViewController 上的故事板,您可以看到我上传的图像,取消选中“Extend Edges”旁边的“under top bar”。
如果这不起作用,(这是为了不使半透明的NavigationBar)尝试:
-(void)viewWillAppear:(BOOL)animated
NSString *ver = [[UIDevice currentDevice] systemVersion];
int ver_int = [ver intValue];
if (ver_int < 7)
else
self.navigationController.navigationBar.translucent = NO;
【讨论】:
与@Evgen Bodunov 的答案相同,它不能解决我的问题。我确实希望内容出现在条形下方,但也希望从条形下方开始并仅在向下滚动时才出现在条形下方。 @CrazyYoghurt 哦,我没有意识到你希望导航栏是半透明的..【参考方案2】:尝试在您的视图控制器中使用以下代码。
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
或者把透明视图放在table.tableHeaderView中。该视图的高度等于导航栏的高度。
【讨论】:
当然可以,但不是我想要的方式。我确实希望内容出现在条形下方,但也希望从条形下方开始,并且仅在向下滚动时才出现在下方。 我在我的应用程序中检查了它,导航栏不透明,但我可以清楚地看到它下面的模糊单元格。 太棒了,将透明视图放在第一个单元格的顶部可以完美地工作,尽管它是令人讨厌的解决方法。此视图的高度应为64
,并且必须记住在情节提要的iOS 6/7 Details
中设置-64
ΔHeight
。以上是关于UINavigationBar下的多个UITableView的主要内容,如果未能解决你的问题,请参考以下文章
在 popViewControllerAnimated 之后 UINavigationBar 下的 UITableView
UITableViewController 中的 UINavigationBar 下的 UISearchbar 不在标题中