1

我的表格视图滚动到底部时遇到问题。我试图搜索堆栈溢出以寻找解决方案,但没有任何帮助。

这就是我所拥有的:我有一个表格视图,每次用户滚动到它的底部时,我都会将额外的单元格加载到其中。我这样做如下:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (indexPath.row == ([self.tableView numberOfRowsInSection:0] - 1))
        //load more data..
}

通过互联网连接成功加载数据后,我正在调用[self.tableView reloadData]刷新表并增加其大小。

现在问题来了:当用户选择一个单元格时,会显示一个详细信息视图控制器。我注意到在显示详细信息视图之前,表格会快速调整为其原始大小,仅显示内部单元格的初始数量。

当详细信息视图被关闭时,表格视图恢复到其原始大小(不适合加载的数据willDisplayCell: forRowAtIndexPath:),并且无法向下滚动直到所有数据结束。

我检查了所有这些要点,但没有任何帮助:

  • 通过调用[self.tableView reloadData]inviewWillAppear方法重新加载表视图中的数据。
  • 表视图的delegateanddataSource已正确设置为容器视图控制器。
  • 当视图再次出现时检查调用tableView: numberOfRowsInSection:,它返回我拥有的所有数据的确切数量,但问题在于表中的大小不适合我的总数据。

我还尝试如下调整表格框架的大小:

CGRect frame = self.tableView.frame;
frame.size.height = self.tableView.contentSize.height;
self.tableView.frame = frame;

但没有任何改变。

请问有什么帮助吗??

更新:我在didSelectRowAtIndexPath. 代码很简单:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    DetailsViewController *vc=[[DetailsViewController alloc]initWithNibName:@"DetailsViewController" bundle:nil];
    [self presentViewController:vc animated:YES completion:nil];
}
4

1 回答 1

0
  1. 在uiview中取uiscrollview的对象
  2. 在 uiscrollview 中获取 uitableview 的对象
  3. 设置属性scrollenabled = uitableview的flase
  4. 编写uiscrollview的委托方法

    - (void) scrollViewDidScroll:(UIScrollView *)scrollView 
    {
            if (scrollView == scrollObj)  {
                    CGFloat scrollPosition = scrollObj.contentSize.height - scrollObj.frame.size.height - scrollObj.contentOffset.y;
                    if (scrollPosition < 30) {
                            if ((!spinnerBottom.isAnimating) || intGetDataCallRunning == 0) {
                                    //[spinnerBottom startAnimating];
                                    //[self getLoginFollowingUserVideosCall];
                                    //run WebService call and after that reload the table or if you have data exists then only reload the table
                                    //and after reloading table follow step no 5.
                            }
                    }
            }
    }
    
  5. 重新加载表格后设置表格高度并滚动

    tblVideo.frame = CGRectMake(0, 0, 320, tblVideo.contentSize.height);
    scrollObj.contentSize = CGSizeMake(320,tblVideo.contentSize.height+60);
    
于 2013-04-16T07:43:42.693 回答