当表有比屏幕更多的记录让你看到,并且用户滚动到表格中最后一个记录的底部时,最后两行是不可访问的(仅在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
答案 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>