iOS UITableView 快速滚动(索引方式实现)

参考:http://my.oschina.net/joanfen/blog/204503

思路:UITableView一次性加载数据过多时,需要滑动多次触底。想通过索引实现快速滑动,索引中加载20个空点。用户在最右端滑动时,索引框显示,当触及索引点时指向其想对应的UITableView的RowIndex来实现快速滚动。这方法有缺陷:普通滑动时滚动条被遮盖了。

主要代码:

//获取数据
-(void)getTableData{

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        dispatch_async(dispatch_get_main_queue(), ^{
            // 获取数据库数据
            self.listArray = [[ReportLogic sharedInstance] getProductByCategory];
            if ([self.listArray count] == 0) {
                [GlobalApplication Alert:@"提示" :@"暂无数据"];
            }else{
                // 索引目录,20个空点
                NSMutableArray *stArray =  [[NSMutableArray alloc] init];
                self.sectionTitles = stArray;
                [stArray release];
                for (int i=0;i<20;i++)
                {
                    NSString *index = @"";
                    [self.sectionTitles insertObject:index atIndex:i];
                }
            }
            // 数据刷新
            [self.fmTableView reloadData];
        });
    });
}

#pragma mark index
// 分区数
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}

// 索引目录
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{

    return self.sectionTitles;
}

// 滑动时点击目录
-(NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{

     // 修正索引焦点为UITableView的RowIndex,头尾和中间值
    if (index == 0) {
        index = 1;
    }else if(index == self.sectionTitles.count - 1){
        index = self.listArray.count -1;
    }else
         index = round(index*self.listArray.count/20);
    [self.fmTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES];
    return index;
}
 

效果:

iOS UITableView 快速滚动(索引方式实现)

时间: 2024-12-19 22:52:03

iOS UITableView 快速滚动(索引方式实现)的相关文章

IOS UITableView分组与索引分区实例

1 #import <UIKit/UIKit.h> 2 3 @interface AppDelegate : UIResponder <UIApplicationDelegate> 4 5 @property (strong, nonatomic) UIWindow *window; 6 7 8 @end 1 #import "AppDelegate.h" 2 #import "RootViewController.h" 3 @interfa

Android系统联系人全特效实现(下),字母表快速滚动

本文首发于CSDN博客,转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9050671 在上一篇文章中,我和大家一起实现了类似于Android系统联系人的分组导航和挤压动画功能,不过既然文章名叫做<Android系统联系人全特效实现>,那么没有快速滚动功能显然是称不上"全"的.因此本篇文章我将带领大家在上篇文章的代码基础上改进,加入快速滚动功能. 如果还没有看过我上一篇文章,请抓紧去阅读一下 Android系

IOS UItableView 滚动到底 触发事件

开发过程中,在使用UItableView 总会遇到加载更多的问题,到底是手势响应瀑布流的方法好? 还是添加一个底端cell点击触发加载更多好?我也想有自己的判断.但是我们老板总说了算,没办法,谁叫我给人家打工呢? cell触发式略,这个很简单. 下边讲下怎么响应瀑布流. 主要有上拉刷新 和下提加载 这两种操作.关键是判断何时执行:滚动到最上边,滚动到最下边 给出一个方法,目前我是这么做的,有更好的方法我再备份. - (void)scrollViewDidEndDragging:(UIScroll

iOS UITableView表格索引

 if ([myTableView respondsToSelector:@selector(setSectionIndexColor:)]) {         myTableView.sectionIndexColor = [UIColor redColor];         myTableView.sectionIndexBackgroundColor = [UIColor yellowColor];     } for(UIView *view in [tableView subvie

【IOS】IOS开发问题解决方法索引(二)

IOS开发问题解决方法索引(二) 1       不使用ARC编译,-fno-objc-arc ios5 选择了ARC但是不使用ARC编译,-fno-objc-arc http://leobluewing.iteye.com/blog/1384797 http://blog.cnrainbird.com/index.php/2012/03/13/object-c_kai_fa_zhong_hun_he_shi_yong_huo_bu_shi_yong_arc/ 2       SIGABRT错误

IOS UITableView Group&amp;Section

UItableView 根据数据结构不同 会有不同样式 关键在两个代理 tableviewdelegate&tabledatasourse 下面代码是我实施的Group 在模拟器中 ios6.1和ios7 并且滚动后相应的section会“置顶”,效果不错哦! 核心代码: #import <UIKit/UIKit.h> @interface AnnouncementViewController : UIViewController<UITableViewDataSource,UI

iOS UITableView代理方法详解

原 iOS UITableView代理方法详解 IOS UITableView的代理方法详解(http://my.oschina.net/u/2340880/blog/404958) 一.补充 在上一篇博客中,http://my.oschina.net/u/2340880/blog/404605,我将IOS中tableView(表视图)的一些常用方法总结了一下,这篇将tableView的代理方法作了总结,对上一篇博客进行了补充. 二.UITableViewDataSourc(数据源代理) 1.必

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给

ios UItableView,UITableViewHeaderFooterView分组头部的重用机制,简单地仿射变换CGAffineTransform

怎样设置包括第一栏在内相同高度的section(小技巧,虽然容易但容易忽略) *第一步,在viewdidload里将尾部设为0,table.sectionFooterHeight = 0;(代理方法)- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return 0; }虽然也可以设置尾部高度,但是设置后没有效果 第二步,调用tableView的代理方法- (CGF