调用UITableView scrollToRowAtIndexPath时不会发生滚动

时间:2010-05-17 04:17:32

标签: iphone cocoa-touch

我的视图包含一个包含6行的简单TableView和一个在单击时调用doScroll的按钮。我doScroll()的目标只是滚动到第5个单元格,使其位于表格视图的顶部。

- (void)doScroll: (id)sender
{
    NSIndexPath *index = [NSIndexPath indexPathForRow:4 inSection: 1];
    [m_tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

但是,当调用doScroll时,tableview仅略微滚动。我怀疑这与滚动视图的大小有关。所以我尝试在滚动之前增加m_tableview.contentsize的高度。然而,在我这样做之后,根本没有滚动...

视图控制器是一个简单的UIViewController,它通过IBOutlet引用表视图。出于某种原因,滚动按预期的默认导航应用程序工作,其中控制器是UITableViewController

1 个答案:

答案 0 :(得分:3)

UITableView将阻止您向上滚动空白区域。在表格底部添加足够的有效内容,以便单元格可以向上滚动。使用表格的边界减去单元格的高度,以获得更准确的框架:

myTable.tableFooterView = [[[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)] autorelease];

您也可以使用bottom属性的contentInset