标签栏覆盖UITableView的最后一个单元格

时间:2010-08-11 21:53:14

标签: iphone uitableview uitabbarcontroller

我正在开发基于Tab Bar应用程序预设的应用程序。在其中一个选项卡中,我有一个显示大量数据的表格视图,但当我滚动到底部时,表格视图中最后一个单元格的一半被标签栏覆盖。

任何人都有解决方案吗?

12 个答案:

答案 0 :(得分:16)

为我添加页脚空间:

//this prevent the tabbar to cover the tableview space
UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 90)];
footer.backgroundColor = [UIColor clearColor];
myTableView.tableFooterView = footer;

答案 1 :(得分:11)

这就是诀窍(在Interface Builder中):

TableView above TabBar

答案 2 :(得分:4)

有几个解决方案。

1。)假设您使用的是半透明工具栏,则必须使工具栏不透明。

2.。)如果你正在使用StoryBoard并且你在ViewController中放置一个TableView,假设它是一个ViewController而不是一个TableViewController。

3.)您可以手动添加填充/间距。

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
    self.edgesForExtendedLayout = UIRectEdgeNone;
    self.extendedLayoutIncludesOpaqueBars = YES;
    self.automaticallyAdjustsScrollViewInsets = NO;
}

UIEdgeInsets insets = UIEdgeInsetsMake (0,sizeOfTableView - sizeOfTabBar, 0, 0);
self.tableView.contentInset = inset;
self.tableView.scrollIndicatorInsets = inset;

希望这会有所帮助&快乐的编码!

答案 3 :(得分:3)

查看标签栏的大小,并相应地调整表格视图的大小。阅读有关框架属性的文档,如果您为此目的使用IB,则允许您设置事物的大小等。

答案 4 :(得分:2)

REAL ANSWER:

我遇到了这个问题,最终到了这里......所以即使这个已经老了,我也是这样解决这个问题的:

我有一个UITabBar控制器,其中一个选项卡是UIViewController,它只有一个添加的行:

[self.view addSubview:navController.view];

这是错误 ..即使代码有效,概念也是错误的(至少在我的情况下),navController应该直接在UITabBar中链接作为其中一个标签...

那么,真正的答案是什么?

您必须错误地实施了导航控制器。正如我所解释的那样,证据就是我有这个问题,还有This Guy ......

答案 5 :(得分:1)

我发现唯一的解决方法是为tableview添加一个填充页脚:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/18180-resizing-uitableview-programatically.html

答案 6 :(得分:1)

我刚刚通过添加常数...硬编码解决了这个问题...如何找到适合您的阈值?

答案 7 :(得分:0)

tableview部分选择您拥有Simulated Metrics,打开属性检查器的视图,为底栏项选择Tab Bar

然后XCode会更新您的视图,为TabBar预留空间。因此,tableview不会被覆盖。

答案 8 :(得分:0)

对我来说,只是UIViewController中的表视图没有任何约束,一旦我将其固定到视图的边缘就固定了。

答案 9 :(得分:0)

<强> SWIFT

我遇到了这个问题,当我将UITableViewController嵌入到UITabBarController中时,最后一个单元格(或底部或大单元格)在完全向下滚动时会保留在TabBar下面。经过一天尝试各种代码和无法解决的工作后,我只需将我的UITableViewController重新嵌入导航控制器中,然后将它们嵌入到TabBar控制器中。间距是固定的,表视图现在清除了tabBar。

答案 10 :(得分:0)

斯威夫特3:

这对我来说非常有用。此代码不仅会停止显示标签栏后面的最后一个单元格,还会向上推动滚动指示。将代码放在viewDitLoad()

if let rect = self.navigationController?.tabBarController?.tabBar.frame
{
    let y = rect.size.height
    tableView.contentInset = UIEdgeInsetsMake( 0, 0, y, 0)
    tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, y, 0)
}

答案 11 :(得分:-2)

我认为你有一个自定义Tabbar,你需要重置Tabbar的高度等于这个Tabbar的背景图像的高度。

UITabBar * tabbar = self.tabBar ; 
[tabbar setBackgroundImage:[UIImage imageNamed:@"image.png"]] ; 
[tabbar setFrame:CGRectMake(0, 480 - imageHeight, 320, imageHeight)];