NavigationBar在TabBarViewController中隐藏了TableView

时间:2013-10-14 18:35:05

标签: iphone ios objective-c uitableview uinavigationcontroller

我有一个推送TabBarViewController的ViewController。在TabBar View Controller里面我有4个标签。其中两个标签栏是UITableViewControllers,另外两个是ViewControllers。第一个选项卡是一个表视图控制器,工作正常,即不被导航栏隐藏。第三个选项卡是另一个TableViewController,部分由导航栏覆盖。第一个部分和第一个单元格隐藏在导航栏下方。过去有没有人遇到过这个问题,或者有人知道解决这个问题吗?我尝试了一些手动调整帧大小的方法

self.tableView.frame = CGRectMake(10,10,self.view.bounds.size.width -20, self.view.bounds.size.height-20);

这似乎不起作用。我也试过AutoLayout但没有用。我不知道还能做什么。任何人对如何解决这个问题有任何建议或想法。

编辑:我尝试了edgesForExtendedLayout,但它使我的导航栏颜色变深了。它可以为导航栏中的颜色更改设置动画,有点像加载栏。

注意:这只发生在ios7中。我只是在iOS 6.1中模拟它,导航栏根本没有覆盖表视图控制器,这对我来说很奇怪。有人有什么建议吗?

编辑#2:注意到这是iOS 7>问题我做了以下但现在导航栏已将颜色更改为更深的颜色。

if([[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."][0] intValue] >= 7)
    {
        if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        {
            self.edgesForExtendedLayout = UIRectEdgeNone;
            self.extendedLayoutIncludesOpaqueBars = YES;
            self.automaticallyAdjustsScrollViewInsets = NO;
        }
    }

2 个答案:

答案 0 :(得分:2)

在UITableViewController的viewDidLoad方法中(假设它加载了对tabBarController的调用)与选项卡关联使用

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
    self.edgesForExtendedLayout = UIRectEdgeNone;
    self.tableView.contentInset = UIEdgeInsetsMake(0., 0., CGRectGetHeight(self.tabBarController.tabBar.frame), 0);
}

答案 1 :(得分:1)

我用以下方法解决了这个问题:

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