iOS中Tableview右边有字母检索 点击可以直接定位显示的问题

在做项目的过程中,我遇到这样一个问题,就是本身的tableview 调用

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

方法的时候,最后几个位置点击后不能准确定位,比如说“#” 不管我如何点击“#”都无法把其对应的列表项显示出来,所以我自己在

- (NSInteger) tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index

方法中重写了一些方法 代码如下

- (NSInteger) tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{<span style="white-space:pre">	</span>
    //1.获取当前index的section的original的y
    //2.用tableview.contentsize.height减去y,得到lefty
    //3.如果lefty>=tableview.frame.size.height 滚动lefty个单位
    //4.如果lefty<tableview.frame.size.height 滚动tableview.contentsize.height-tableview.frame.size.height
    float y = [self getYOffSet:index title:title];
    if (tableView.contentSize.height-y>=tableView.frame.size.height) {
         [tableView setContentOffset:CGPointMake(0, y) animated:NO];
    }else{
         [tableView setContentOffset:CGPointMake(0, tableView.contentSize.height-tableView.frame.size.height) animated:NO];
    }
    return NSNotFound;
}

-(float)getYOffSet:(NSInteger)index title:(NSString *)title{
//这里的offy = 100 是我在这个tableview最上面加了两个section 不在这个计算之内 显示了别的东西 对于不需要添加特别提示等//显示,可以设置为0
    float offY = 100;
    int count = 0;
//对应的所有内容的高度
    float addOffy = 0;
//对应标题下内容不为空 例:以a开头的内容有aaa,abc,abcd 则a标题下不为空,addTitleCount加1 计数用 通过这个计算一共有
//多少项内不为空 总共占用多少header高度 最后一句中得22是我定义的一个viewforHeader的高度 
    float addTitleCount = 0;
//sectionTitles 是从a-z加上#之后的列表
//datasource 是对应我的没个section中有几项内容的数据
    for (NSString * string in self.sectionTitles) {
        if ([string isEqualToString:title]) {
            break;
        }
        addOffy+=50*[[self.dataSource objectAtIndex:count] count];
        if ([[self.dataSource objectAtIndex:count] count]!=0) {
            addTitleCount++;
        }
        count++;

    }

    return offY+22*(addTitleCount)+addOffy;
}
时间: 2024-08-30 01:53:01

iOS中Tableview右边有字母检索 点击可以直接定位显示的问题的相关文章

IOS中TableView的用法

IOS中TableView的用法 一.UITableView 1.数据展示的条件 1> UITableView的所有数据都是由数据源(dataSource)提供的,所以要想在UITableView展示数据,必须设置UITableView的dataSource数据源对象 2> 要想当UITableView的dataSource对象,必须遵守UITableViewDataSource协议,实现相应的数据源方法 3> 当UITableView想要展示数据的时候,就会给数据源发送消息(调用数据源

ios 中tableview和scrollView的区别

scrollView: 1. 介绍scrollView一些属性     1>.要想使用scrollView必须做两件事 1).设置scrollView内容 2).设置contentSize (滚动范围) 2>.其他属性         1). contentOffset(滚动位置)         2). contentInset(额外增加的滚动区域)         3). bounces (设置UIScrollView是否需要弹簧效果) 4). crollEnabled (设置UIScro

iOS中TableView小技巧

摘要: TableView是ios开发中经经常使用到的控件,这里统一记录一下开发中遇到的经常使用小技巧,不断探索更新.也希望大家能够告诉我很多其它经常使用的小技巧啦~一起进步 1.去除多余的列表线条 原始的TableView在没有数据的行也会显示一条条的线条,不太美观,用一行代码能够解决,一般放在ViewDidLoad中 self.tableView.tableFooterView = [[UIView alloc] init]; 详细原理还没弄懂.知道的麻烦不吝赐教一下~ 2.选中列表条目后取

iOS中tableview中headerview总保持在屏幕上方和随着屏幕滑动一起移动至消失

1 : tableview中headerview总保持在屏幕上方 :  在代理方法中创建view,并添加到headerview上 l例子: - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { if ([self.title isEqualToString:@"幕后"]) { NSArray *array = @[@"全部",@"

关于iOS中TableVIew(列表)的自定义创建和自定义的Cell

最近研究了一些HTML5的基础,一些C++的基础,有些冷落了我的iOS技术,以至于最近对于iOS有种没有信心的感觉,所以今天开始回归我的iOS核心技术,眼前表现为回顾iOS技术,以博客的形式,写总结,好吧,废话不多说 纯代码形式创建:1.创建tableView 2.定义一个自定义Cell 3.设置代理 4.代理方法的我实现 tableView的创建主要有以下步骤: 1.创建tableView - (void)createTableView{ //初始化tableView并定义位置,大小.   

ios中tableview的移动添加删除

// // MJViewController.m // UITableView-编辑模式 // // Created by mj on 13-4-11. // Copyright (c) 2013年 itcast. All rights reserved. // #import "MJViewController.h" @interface MJViewController () { // 当前的编辑模式 UITableViewCellEditingStyle _editingStyl

iOS中TableView的分割线顶格样式的实现

//tableView线顶头效果 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero];

iOS中防止两个按钮同时点击的方法

在iOS开发中通常会遇到,两个靠的很近的按钮,一不小心两个按钮同时点击了. 神奇的bug就产生了,如果两个按钮事件都是跳转页面的话,就会出现连跳两个页面的情况. 通常解决此问题的方法是:定义一个BaseViewController. 设置一个方法setExclusiveTouchForButtons:(UIView *)myView -(void)setExclusiveTouchForButtons:(UIView *)myView { for (UIView * v in [myView s

iOS中关于动态Tableview中的cell数据传输的多线程问题解决之拙见

iOS中关于动态Tableview中的cell数据传输的多线程问题解决之拙见 (2015-12-05 12:48:20)[编辑][删除] 转载▼     首先我们先明确一下问题: 1.因为UI是在主线程中更新的,不能在down数据的同时显示界面,这样会使得下载的时间占用主线程,导致的后果就是你的屏幕就那样的卡死在哪了 2.如果要解觉问题1,就势必要将其下载数据的环节放在其他分线程上来实现,但是这里还会遇见一个问题,分线程的执行是不会有序的,这样,在动态显示的过 程中,cell中的数据就会混乱的变