iOS tableView右侧索引视图状态获取的方法实例

前言

在iPhone和其他iOS的很多程序中都会看到Table View的出现,除了一般的表格资料展示之外,设置的属性资料往往也用到Table View,Table View主要分为以下两种:

Plain:这是普通的列表风格
 Grouped :这是分块风格。

本文介绍的是iOS tableView右侧索引视图状态获取的相关内容,下面来看正文

需求

一图胜千言!

在触摸右侧索引栏时

需要展示对应的组号名称

手指离开时消失

实现

通过Xcode查看视图层次结构

右侧索引视图的继承关系

是这样的:

UITableViewIndex
UIControl
UIView
UIResponder
NSObject

很显然UITableViewIndex 是私有的

但是UIControl 是公开的

于是

通过遍历tableView的子视图来获取它

- (void)reloadData
{
    [_tableView reloadData];

    for (UIView *view in _tableView.subviews) {
        if ([view isKindOfClass:[UIControl class]]) {
            _indexControl = (UIControl *)view;
        }
    }
}

接着

在代理方法里面

处理相关逻辑就OK了

/// 点击右侧索引时的代理方法
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    _sectionLabel.text = title;  // 显示 组号标题 的Label
    if (_sectionLabel.hidden) { // 隐藏了,显示它
        _sectionLabel.hidden = NO;
    }

    // 延迟 1 秒隐藏
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
		//  isTracking: A Boolean value indicating whether the control is currently tracking touch events.
        if (!_indexControl.isTracking) { // 没有触摸时,隐藏它
            _sectionLabel.hidden = YES;
        }
    });

    return index;
}

总结

到此这篇关于iOS tableView右侧索引视图状态获取的文章就介绍到这了,更多相关iOS tableView索引视图状态内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • iOS tabview如何添加字母索引

    本文实例为大家分享了iOS tabview添加字母索引的具体代码,供大家参考,具体内容如下 文章转载自大神源码传送门 1.将汉字转换成首字母 //系统获取首字母 - (NSString *) pinyinFirstLetter:(NSString*)sourceString { NSMutableString *source = [sourceString mutableCopy]; CFStringTransform((__bridge CFMutableStringRef)source, N

  • iOS tableView右侧索引视图状态获取的方法实例

    前言 在iPhone和其他iOS的很多程序中都会看到Table View的出现,除了一般的表格资料展示之外,设置的属性资料往往也用到Table View,Table View主要分为以下两种: Plain:这是普通的列表风格  Grouped :这是分块风格. 本文介绍的是iOS tableView右侧索引视图状态获取的相关内容,下面来看正文 需求 一图胜千言! 在触摸右侧索引栏时 需要展示对应的组号名称 手指离开时消失 实现 通过Xcode查看视图层次结构 右侧索引视图的继承关系 是这样的:

  • iOS tableView多输入框如何获取数据

    前言 难得有点空暇的时间,写写文章,一壶小茶,惬意.扯远了,言归正传. 大家在做App开发的时候,肯定遇到过在一个列表中有多个让用户填写资料的情况,类似于这样的界面: iOS 如果一个tableView中有很多的输入框,而且cell是复用的,这个还有个提交功能 我的设计思路是这样的 1.建立一个Model对象,包含要输入的所有字段, 2.在建立一个cell,有个label和textField, 3.在初始化cell的地方,根据不同的indexRow,显示cell上不同的label,例如昵称.邮箱

  • Android iOS常用APP崩溃日志获取命令方法

    目录 前言 Android 崩溃日志获取方法 iOS 崩溃日志获取方法 前言 ​ 在日常的测试工作过程中,app可能会出现闪退崩溃的情况,这个时候就需要测试同学快速抓取到崩溃日志,来有效的辅助开发定位问题,快速的去解决问题. 分享Android & iOS双端常用的崩溃日志获取方法 Android 崩溃日志获取方法 使用adb命令获取 # 语法: adb shell logcat # 可过滤app包名.日志级别来快速定位 adb shell logcat -v -v -v time>E:/c

  • IOS自带Email的两种方法实例详解

    IOS自带Email的两种方法实例详解 IOS系统框架提供的两种发送Email的方法:openURL 和 MFMailComposeViewController.借助这两个方法,我们可以轻松的在应用里加入如用户反馈这类需要发送邮件的功能. 1.openURL 使用openURL调用系统邮箱客户端是我们在IOS3.0以下实现发邮件功能的主要手段.我们可以通过设置url里的相关参数来指定邮件的内容,不过其缺点很明显,这样的过程会导致程序暂时退出.下面是使用openURL来发邮件的一个小例子: #pr

  • iOS tableView实现单选和多选的实例代码

    今天在项目中遇到了tableView的单选需求,现在总结一下,用一个简单的demo实现了简单的单选和多选两个功能.先看下效果图: 1:首先实现下单选 1:使用一个变量记录选中的行 @property (assign, nonatomic) NSIndexPath *selIndex; //单选选中的行 2:设置tableView数据,共2组,每组10行, - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { ret

  • iOS中利用CAGradientLayer绘制渐变色的方法实例

    前言 以前不用自己切图,现在要自己切图,看到设计稿有好多不同规格的渐变色的背景,一个一个切的话好麻烦,没有想到iOS本来就可以实现渐变色.也就是今天的主角CAGradientLayer. 渐变色使用的类是CAGradientLayer,有两个要素,渐变颜色的起点和终点.渐变的颜色集合 简单示例: //设置渐变颜色 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.frame = view.bounds;

  • iOS中读写锁的简单实现方法实例

    目录 废话开篇 思考一.对于锁的类型的理解 思考二.读写锁的实现逻辑 思考三.简单封装读写锁,满足读写逻辑 总结 废话开篇 iOS 下的多线程的技术的应用衍生出了锁的机制,试想,如果 iOS 下没有多线程的概念,所有的代码都会在同步环境下执行,那么,也就不会产生争夺资源情况的发生,当然,也就没有办法利用多核的优势.所以,多线程的应用是广布的,而锁的应用是局部的,所以,二者应相辅相成,来达到提高运行效率的同时提高程序运行的稳定性. 思考一.对于锁的类型的理解 基本的三种锁的类型:互斥锁.自旋锁.读

  • javascript使用for循环批量注册的事件不能正确获取索引值的解决方法

    本文实例讲述了javascript使用for循环批量注册的事件不能正确获取索引值的解决方法.分享给大家供大家参考.具体分析如下: 可能不少朋友会遇到一个问题,那就是当使用for循环批量注册事件处理函数,然后最后通过事件处理函数获取当前元素的索引值的时候会失败,先看一段代码实例: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name=&q

  • DevExpress实现根据行,列索引来获取RepositoryItem的方法

    本文实例讲述了DevExpress实现根据行,列索引来获取RepositoryItem的方法,具体方法如下: 主要功能代码如下: /// <summary> /// 根据行,列索引来获取RepositoryItem /// </summary> /// <param name="view">GridView</param> /// <param name="rowIndex">行索引</param&g

  • jQuery实现获取元素索引值index的方法

    本文实例讲述了jQuery实现获取元素索引值index的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

随机推荐