嵌入在选项卡栏中的iOS7表视图不显示最后一个单元格

时间:2013-09-26 15:31:14

标签: storyboard uitabbarcontroller uitableview ios7

在我的故事板中,我有一个View控制器(嵌入在导航控制器中)。 在视图控制器内部,我有一个标签栏控制器,在标签内有一个表视图控制器。我的问题是表视图的最后一行位于标签栏控制器的标签栏下面。如果我为iOS 6构建我的应用程序,则不会发生这种情况。

我该如何解决这个问题?谢谢!

5 个答案:

答案 0 :(得分:19)

尝试设置tabbar半透明属性。

self.navigationController.navigationBar.translucent= NO; // Set transparency to no and

self.tabBar.translucent= NO; //Set this property so that the tab bar will not be transparent

答案 1 :(得分:2)

如上所述,这将完美地运作。我刚试过它。

self.tabBar.translucent = NO;

答案 2 :(得分:2)

接受和赞成的答案不适用于我的设置:

UITabBarController -> UINavigationController -> UIViewController -> UITableView

我的应用的根视图控制器是UITabBarController。每个选项卡都是UINavigationController,在一个选项卡中,导航控制器的根是UIViewController,其中有一个表视图作为主视图。

所以这对我有用:当alloc-initing UITableView时,我计算高度并将其设置在表视图的框架中。通用公式为screen height - (status bar height + nav bar height + tab bar height)

答案 3 :(得分:1)

我认为由于视图控制器层次结构的嵌套结构,它与automaticallyAdjustsScrollViewInsets未应用(或正确应用)有关。

尝试将您的表格复制到新的UIViewController,并确保UIViewController的身份检查器中的“调整滚动视图插图”中的复选标记已打开。

答案 4 :(得分:0)

我遇到了同样的问题,而且投票的答案并没有解决。请参阅my answer类似问题Tab Bar covers TableView cells in iOS7

我通过在表格视图控制器的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));
}

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