IOS- UITableView滚动到顶部

时间:2015-09-22 07:27:30

标签: ios objective-c iphone uitableview cell

我在我的项目中使用自定义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;

4 个答案:

答案 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)]  会做你想做的事。