iOS7中嵌入标签栏的表格视图无法显示最后一个单元格。

9
在我的故事板里,我有一个视图控制器(嵌套在导航控制器中)。 在视图控制器内部,我有一个标签栏控制器,在标签内有一个表格视图控制器。我的问题是表格视图的最后一行被标签栏控制器的标签所覆盖。如果我为iOS 6构建我的应用程序,则不会发生这种情况。
如何解决这个问题?谢谢!

有没有办法让这个透明度生效?我想保持透明度,但是我遇到了同样的问题。 - Matthew Knippen
5个回答

19
尝试设置您的选项卡栏透明属性。 self.navigationController.navigationBar.translucent = NO; //将透明度设置为否, self.tabBar.translucent = NO; //设置此属性以使选项卡栏不透明。

它已经从Interface Builder中设置了,但我不知道为什么它没有起作用。有了你的解决方案,现在没问题了,谢谢! - ace_ventura
我认为我们需要在运行时设置它。我没有在Xcode中观察到该选项。我现在会去搜索一下。 :) - Priyatham51
等等,这里出现了非常奇怪的事情。如果我为我的设备构建,那没问题。但是如果我为模拟器构建,我会收到一个错误信息,指出self.tabBar.translucent = NO;属性中没有透明度!这怎么可能? - ace_ventura
2
请确保您正在运行iOS7模拟器。 - Priyatham51

2
这样做完全可行,我刚刚测试过了。
self.tabBar.translucent = NO;

2
被接受和点赞的回答对我的设置不起作用:
UITabBarController -> UINavigationController -> UIViewController -> UITableView
我的应用程序的根视图控制器是UITabBarController。每个选项卡都是UINavigationController,在一个选项卡中,导航控制器的根是一个UIViewController,其中一个表视图作为主视图。
所以这就是对我有用的:在分配初始化UITableView时,我计算高度并将其设置在表视图的框架中。通用公式是屏幕高度 -(状态栏高度+导航栏高度+选项卡栏高度)。

1
我觉得这与你的视图控制器层次结构嵌套有关,导致 automaticallyAdjustsScrollViewInsets 没有被应用(或者被正确应用)。尝试将你的表格复制到一个新的 UIViewController 中,并确保在该视图控制器的“调整滚动视图插入”标识检查器中打开了检查标记。

0

我曾经遇到同样的问题,但是那些得到赞的答案并没有解决它。请参考我的回答以及类似问题的iOS7中Tab Bar覆盖TableView单元格

我通过在表视图控制器的viewWillAppear:方法中手动设置表视图的框架(如Matt Quiros所建议的)为屏幕高度 - (状态栏高度 + 导航栏高度 + 标签栏高度)来解决这个问题。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // Adjust height of tableview (does not resize correctly in iOS 7)
    CGRect tableViewFrame = self.tableView.frame;
    tableViewFrame.size.height = [self heightForTableView];
    self.tableView.frame = tableViewFrame;
}

- (CGFloat)heightForTableView
{
    return CGRectGetHeight([[UIScreen mainScreen] bounds]) -
           (CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]) +
            CGRectGetHeight(self.navigationController.navigationBar.frame) +
            CGRectGetHeight(self.tabBarController.tabBar.frame));
}

如果有人找到了更好的解决方案,请分享!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接