UItableView滚动到特定位置

如果在reloadData后需要立即获取tableview的cell、高度,或者需要滚动tableview,那么,直接在reloadData后执行代码是有可能出问题的。

reloadDate并不会等待tableview更新结束后才返回,而是立即返回,然后去计算表高度,获取cell等。

如果表中的数据非常大,在一个run loop周期没执行完,这时,需要tableview视图数据的操作就会出问题了。

apple并没有直接提供reloadData的api,想要程序延迟到reloadData结束在操作,可以用以下方法:

方法一:


1

2

3

[self.tableView reloadData];

[self.tableView layoutIfNeeded];

//刷新完成

方法二:


1

2

3

4

[self.tableView reloadData];

dispatch_async(dispatch_get_main_queue(), ^{

//刷新完成

});

注意上面的。下面为刷新后,滚动代码(滚动到底)

 //刷新完成
        NSInteger s = [chatTableView numberOfSections];
        if (s<1) return;
        NSInteger r = [chatTableView numberOfRowsInSection:s-1];
        if (r<1) return;

        NSIndexPath *ip = [NSIndexPath indexPathForRow:r-1 inSection:s-1];

        [chatTableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionBottom animated:animated];
方法二: [chatTableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)];
时间: 2024-10-10 00:36:03

UItableView滚动到特定位置的相关文章

IOS学习之UITableView滚动到指定位置

IOS学习之UITableView滚动到指定位置 方法很简单: - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated 有些需要注意的地方: 如果在reloadData后需要立即获取tableview的cell.高度,或者需要滚动tableview,那么,直接在reloadDa

隐藏UITableView的滚动条以及修改滚动条的颜色,UITableView 滚动到指定行 section

    //隐藏 self.tableView.showsVerticalScrollIndicator = NO; //修改颜色 self.tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite; UITableView 滚动到指定行 section NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:2]; CGRect frame = [tablevie

使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容)

使用iframe调用指定网页的特定位置(显示目标网页某区域的我想要的内容) 有些时候我们并不需要显示iframe标签属性src指定的目标网页的所有内容,往往只需要显示某一特定区域.现有两种实现方法提供,但严禁使用此方法用于欺骗.隐瞒目的. 这里用到了Iframe的一些属性,稍微介绍下:       1. marginheight 属性规定框架内容与框架的上方和下方之间的高度,以像素计.       2. maiginweidth 属性规定框架内容与框架的左侧和右侧之间的高度,以像素计.     

uitableview滚动到最后一行

本文转载至 http://mrjeye.iteye.com/blog/1278521 - (void)scrollTableToFoot:(BOOL)animated { NSInteger s = [self.tableView numberOfSections]; if (s<1) return; NSInteger r = [self.tableView numberOfRowsInSection:s-1]; if (r<1) return; NSIndexPath *ip = [NSI

UITableView 滚动流程性优化

影响 UITableView 滚动的流畅性的原因 1. 在代理方法中做了过多的计算占用了 UI 线程的时间 2.同上 3.Cell 中 view 的组织复杂 关于第一点,首先要明白 tableview 的代理(这里指 datasource 和 delegate 的那套方法,下同)方法的调用顺序,和时机.对于一般的应用会有如下顺序: 1.向代理要 number Of Rows. 2.对于每行向代理要 height For Row At Index Path. 3.向代理要 当前屏幕可见的 cell

android 检测ListView滚动到的位置

ListView滚动 1.要用到一个监听事件是:setOnScrollListener(); API解释是: Set the listener that will receive notifications every time the list scrolls. Parameters:l the scroll listener 2.它里面包含了两个方法: 一个是:onScrollStateChanged(AbsListView view, int scrollState),用来表明ListVi

优化UITableView滚动性能

自定义的cell如下: 第一个:Instruments测试,iphone4 38fps-45fps,iphone3G 25fps // table with normal XIB based cells - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"CustomC

UITableView滚动性能优化

影响 UITableView 滚动的流畅性的原因 1.在代理方法中做了过多的计算占用了 UI 线程的时间 2.Cell里的图片吃GPU(在tableView:cellForRowAtIndexPath:中) 3.Cell 中 view 的组织复杂 关于第一点,首先要明白 tableview 的代理(这里指 datasource 和 delegate 的那套方法,下同)方法的调用顺序,和时机.对于一般的应用会有如下顺序: 1.向代理要 number Of Rows. 2.对于每行向代理要 heig

scroll 滚动到指定位置触发事件 and 点击一按钮/链接让页面定位在指定的位置

scroll 滚动到指定位置触发事件:$(function(){ $(window).scroll(function() { var s =$(window).scrollTop(); if (s>=782) {//782是导航条离页面顶部的距离(px) $('.nav').addClass('fixednav'); } else{ $('.nav').removeClass('fixednav'); } });}); .fixednav{ position:fixed; top:0px; le