导航栏影响UITableViewController

时间:2015-11-26 19:29:56

标签: ios objective-c uitableview uinavigationbar

我的故事板中有一个UITableViewController与UINavigationController连接。当我向下滚动桌子时,我可以看到行到后面的行到“导航栏”。

做一个简短的检查,我意识到导航栏不会影响表格大小(看起来导航栏在我的桌子前面)。从我选择表格大小时开始:

-(CGFloat)tableView:(UITableView *)tableViews heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    CGFloat value = tableViews.frame.size.height;

    NSLog(@"Table size -> %f",value);

    return value/2;

}

他在我的窗口返回相同的大小...我可以做些什么来使“导航栏”影响我桌子的大小?

1 个答案:

答案 0 :(得分:1)

您有几个选择。请尝试以下方法之一:

  1. 从表格视图框高度中减去导航栏和状态栏的高度。

    CGFloat value = tableViews.frame.size.height - CGRectGetMaxY(self.navigationController.navigationBar.frame);
    
  2. 不要将表格视图放在导航栏后面。通过将以下行添加到表视图控制器的viewDidLoad

    来解决此问题
    self.edgesForExtendedLayout = UIRectEdgeLeft | UIRectEdgeRight;
    

    这可以防止表格视图进入导航栏或工具栏。

  3. 还有一点需要注意。如果您希望所有行都具有相同的高度,请不要实现heightForRowAtIndexPath方法。相反,只需设置表格视图的rowHeight属性。