UITableViewCell中的UITableView不会滚动到底部

时间:2014-07-17 02:49:25

标签: ios objective-c uitableview

我有一个UITableViewCell内部UITableView使用高度为77的自定义单元格。我无法通过UITableView一直滚动,最后一行被切断。

我正在使用此代码为表格视图创建框架。

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

_routeTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 50, screenWidth, screenHeight) style:UITableViewStylePlain];

这是一个显示我的问题的简短video

有没有人有任何建议我如何正确滚动路线?

似乎没有空间让细胞向上,而不仅仅是切断最后一个细胞。

-(void)configureRouteTableView
{
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width;
    CGFloat screenHeight = screenRect.size.height;

    _routeTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 50, screenWidth, screenHeight - 50) style:UITableViewStylePlain];

    _routeTableView.delegate = self;
    _routeTableView.dataSource = self;
    _routeTableView.hidden = YES;
    _routeTableView.separatorColor = [UIColor clearColor];
    [_routeTableView setBackgroundColor:[UIColor clearColor]];
    [self.contentView addSubview:_routeTableView];
}

6 个答案:

答案 0 :(得分:2)

我个人的经历

1)确保滚动内容大小是uitableview单元格大小的倍数

2)确保您的tableview的y坐标加上tableview的高度不超过屏幕。

对于你的情况,我认为它是2号,这会给你带来麻烦。从那以后,

_routeTableView = [[UITableView alloc] initWithFrame:CGRectMake(0,50,screenWidth,screenHeight)样式:UITableViewStylePlain];

50 + screenHeight,表示你的桌面视图的某些部分不在屏幕上。 :)

感谢建议的建议。我不确定为什么我无法使用您的编辑功能。

答案 1 :(得分:2)

我认为您有两种方法可以解决此问题:

1)首先调整UITableView的框架:

_routeTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, self.navigationController.navigationBar.frame.size.height, screenWidth, screenHeight - self.navigationController.navigationBar.frame.size.height) style:UITableViewStylePlain];

表示表格视图的高度是屏幕的高度减去导航栏的高度,并在y轴上的导航栏之后开始。

2)给你的UITableView的页脚增加一些高度。 (不推荐)

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 50.0f; }

另外请确保此委托函数返回实际的单元格高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
   return yourTableCellHeight;
}

答案 2 :(得分:0)

我需要将框架线更改为:

_routeTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 50, screenWidth, 90) style:UITableViewStylePlain];

答案 3 :(得分:0)

请按以下方法设置tableview单元格高度。

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

{
    return height;//77

}

答案 4 :(得分:0)

尝试使用tableview的contentInsets。您可以在IB中设置它。但首先禁用自动布局。

答案 5 :(得分:0)

我使用Autolayout约束来解决这个问题,而不是让iOS做(错误的)事情:

如果您使用Podfile,请安装UIView+Autolayout

pod 'UIView+Autolayout'

包括UIView-Autolayout.h

#import "UIView-Autolayout.h"

并在viewDidLoad中使用它:

[tableView setTranslatesAutoresizingMaskIntoConstraints:NO];
[tableView pinToSuperviewEdges:JRTViewPinAllEdges inset:0.0];