解雇模态视图控制器后,uitableview滚动到底部问题

时间:2013-04-16 07:28:45

标签: ios objective-c uitableview

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

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

- (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:上加载的数据),并且无法向下滚动直到所有数据结束。< / p>

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

  • 通过[self.tableView reloadData]方法调用viewWillAppear重新加载表格视图中的数据。
  • 表视图的delegatedataSource已正确设置到容器视图控制器。
  • 在视图再次出现时检查了调用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];
}

1 个答案:

答案 0 :(得分:0)

  1. 在uiview中获取uiscrollview的对象
  2. 在uiscrollview中获取uitableview的对象
  3. 设置属性scrollenabled = flase of uitableview
  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);