滚动到表格的最后两行

时间:2014-12-17 15:32:54

标签: ios objective-c xcode

当表有比屏幕更多的记录让你看到,并且用户滚动到表格中最后一个记录的底部时,最后两行是不可访问的(仅在iOS7中,在iOS8中一切都很好)。一旦用户从屏幕上取下手指,表格就会上升,最后两行被隐藏。

这是用于tableView的方法之一,但我不知道这是否来自这里:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *  cellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

// Configure the cell...
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}

if (selectionCategMsg == 0)
{
    if ([self.tableauMsgReceived count] < 1) {
        cell.textLabel.text = NSLocalizedString(@"noMessagesYet", nil); //@"No messages yet !";
    }

    else
    {
        cell.textLabel.text = [NSString stringWithFormat:@"%@", [self.tableauMsgReceived objectAtIndex:indexPath.row]];
        cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
    }
}

else
{
    if ([self.tableauMsgSent count] < 1) {
        cell.textLabel.text = NSLocalizedString(@"noReplyYet", nil);
    }

    else
    {
        cell.textLabel.text = [NSString stringWithUTF8String:[NSString stringWithFormat:@"%@", [self.tableauMsgSent objectAtIndex:indexPath.row]].UTF8String];
        cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
    }
}

[cell setAccessoryType:UITableViewCellAccessoryNone];

return cell;
}

有人可以提供建议吗?谢谢。

这是我发现的解决方案:

// -> SET TABLE FRAME
CGFloat sideMargin = 0;
CGFloat originX = sideMargin;

CGFloat topBottomMargin = 100;
CGFloat originY = topBottomMargin;

// Width based on view size
CGFloat sizeWidth = self.view.bounds.size.width);

// Height based on view size
CGFloat sizeHeight = (self.view.bounds.size.height - topBottomMargin);

self.myTableView.frame = CGRectMake(originX, originY, sizeWidth, sizeHeight);
// <- END SET tableView frame

1 个答案:

答案 0 :(得分:0)

UITableView的方法为scrollToRowAtIndexPath:atScrollPosition:animated:。该方法允许您滚动表视图,以便可以看到给定的indexPath。这就是你要找的东西吗?

编辑:

@ Daij-Djan的帖子是关于什么是错的好理论。如果您的表格视图离开屏幕,那么它会将最后几个单元格定位在其视图中,但该视图将不可见。您将需要进行一些调试以找出问题所在。您可以尝试将表视图的图层的borderWidth设置为非零值,以便您可以看到表视图的边界。

在viewDidLoad中,添加如下代码:

myTableView.layer.borderWidth = 1;
myTableView.layer.borderColor= [UIColor redColor].CGColor;

(您将“myTableView”替换为表视图实例变量或属性的名称。)

您必须导入QuartzCore.h才能编译上面的代码:

#import <QuartzCore/QuartzCore.h>