我在我的项目中使用自定义UITableView
显示数据工作正常,但当我尝试将其滚动到底部时,它不会停在所需的单元格,它总是跳到表格的顶部。仅显示2-3个细胞。
请建议添加什么来克服这个问题。
我尝试过在类似问题中回答了这么多代码,但它们无法正常工作
我对UITableView
newsFeedTable = [[UITableView alloc]init];
CGFloat Ytablepadding = CGRectGetMaxY(homeView.frame)+60;
CGFloat heighttable = 700;
newsFeedTable.frame = CGRectMake(0,Ytablepadding, self.view.frame.size.width, heighttable);
[self.view addSubview:newsFeedTable];
newsFeedTable.delegate=self;
newsFeedTable.dataSource= self;
答案 0 :(得分:1)
在viewDidload:
中添加此代码NSIndexPath *myIndexPath = [NSIndexPath indexPathForRow:AddYourLastIndex inSection:0];
[self.tbl_presentation selectRowAtIndexPath:myIndexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];
答案 1 :(得分:1)
UITableView是UIScrollView的子类,因此您也可以使用:
[newsFeedTable scrollRectToVisible:CGRectMake(0,0,1,1)animated:YES]; 或
[newsFeedTable setContentOffset:CGPointZero animated:YES];
答案 2 :(得分:0)
您需要根据视图的高度调整表格视图的高度,您正在进行子视图以查看表格的最后一行,或者将其滚动到底部:
newsFeedTable.frame = CGRectMake(0,Ytablepadding, self.view.frame.size.width, self.view.frame.size.height - Ytablepadding);
并将其滚动到表重新加载的最后一行/弹出数据后,以编程方式滚动它:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[newsFeedTable reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
int lastRowNumber = [newsFeedTable numberOfRowsInSection:0] - 1;
NSIndexPath* ip = [NSIndexPath indexPathForRow:lastRowNumber inSection:0];
[newsFeedTable scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionTop animated:NO];
});
});
}];
答案 3 :(得分:0)
最简单的你可以做的是:
致电[newsFeedTable setContentOffset:CGPointMake(0, CGFLOAT_MAX)]
会做你想做的事。