【问题标题】:iOS7 table view embedded in tab bar doesn't display last cell嵌入在标签栏中的iOS7表格视图不显示最后一个单元格
【发布时间】:2013-10-02 16:05:44
【问题描述】:

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

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

【问题讨论】:

  • 有没有办法让它与透明度一起工作?我想保持透明度,但我遇到了同样的问题。

标签: storyboard uitabbarcontroller uitableview ios7


【解决方案1】:

尝试设置标签栏半透明属性。

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

【讨论】:

  • 它已经从界面生成器中设置,但我不知道为什么它不起作用。有了您的解决方案,现在可以了,谢谢!
  • 我认为我们需要在运行时设置它。我没有观察到 Xcode 中的选项。我现在就去寻找它。 :)
  • 等等,我得到了一些很奇怪的东西。如果我为我的设备构建,那没关系。如果我为模拟器构建,我会收到 self.tabBar.translucent = NO; 的错误。未找到属性半透明!怎么可能??
  • 确保你在iOS7模拟器中运行。
【解决方案2】:

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

UITabBarController -> UINavigationController -> UIViewController -> UITableView

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

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

【讨论】:

    【解决方案3】:

    如前所述,这将完美运行。我刚刚测试过了。

    self.tabBar.translucent = NO;
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,但投票赞成的答案并没有解决它。请参阅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));
        }
        

        如果有人找到更好的解决这个问题的方法,请分享!

        【讨论】:

          猜你喜欢
          • 2013-11-08
          • 1970-01-01
          • 1970-01-01
          • 2011-03-28
          • 2013-10-19
          • 1970-01-01
          • 2011-12-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多