C.J*_*hns 17 iphone indexing uitableview ios
我正在尝试创建一个UITableView索引来更快地滚动一个大UITableView,我有索引显示在右边但当我尝试滚动它,它不起作用..

我想知道我是否遗漏了一些东西,所以我想知道是否还有别的东西需要做,或者其他什么.
#pragma - TableView Index Scrolling
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
if(searching)
return nil;
NSMutableArray *tempArray = [[NSMutableArray alloc] init];
[tempArray addObject:@"A"];
[tempArray addObject:@"B"];
[tempArray addObject:@"C"];
[tempArray addObject:@"D"];
[tempArray addObject:@"E"];
[tempArray addObject:@"F"];
[tempArray addObject:@"G"];
[tempArray addObject:@"H"];
[tempArray addObject:@"I"];
[tempArray addObject:@"J"];
[tempArray addObject:@"K"];
[tempArray addObject:@"L"];
[tempArray addObject:@"M"];
[tempArray addObject:@"N"];
[tempArray addObject:@"O"];
[tempArray addObject:@"P"];
[tempArray addObject:@"Q"];
[tempArray addObject:@"R"];
[tempArray addObject:@"S"];
[tempArray addObject:@"T"];
[tempArray addObject:@"U"];
[tempArray addObject:@"V"];
[tempArray addObject:@"W"];
[tempArray addObject:@"Y"];
[tempArray addObject:@"X"];
[tempArray addObject:@"Z"];
return tempArray;
}
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
if(searching)
return -1;
return index % 2;
}
Run Code Online (Sandbox Code Playgroud)
Lal*_*rya 43
你可以用它
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
Run Code Online (Sandbox Code Playgroud)
这告诉表哪个部分对应于部分标题/索引(例如"B",1))
该方法用于返回对应于标题的部分.但是您想根据这些标题滚动单个部分的行.请按照以下步骤操作:
创建全局数组意味着在.h文件中声明它
NSMutableArray *alphabetsArray;
NSMutableArray *dataArray; //--This contain your cell value i.e. Honda,Mazda--//
Run Code Online (Sandbox Code Playgroud)在viewDidLoad下面的方法中定义它,然后从UITableView方法返回它.
alphabetsArray = [[NSMutableArray alloc] init];
[alphabetsArray addObject:@"A"];
[alphabetsArray addObject:@"B"];
[alphabetsArray addObject:@"C"];
[alphabetsArray addObject:@"D"];
[alphabetsArray addObject:@"E"];
[alphabetsArray addObject:@"F"];
[alphabetsArray addObject:@"G"];
[alphabetsArray addObject:@"H"];
[alphabetsArray addObject:@"I"];
[alphabetsArray addObject:@"J"];
[alphabetsArray addObject:@"K"];
[alphabetsArray addObject:@"L"];
[alphabetsArray addObject:@"M"];
[alphabetsArray addObject:@"N"];
[alphabetsArray addObject:@"O"];
[alphabetsArray addObject:@"P"];
[alphabetsArray addObject:@"Q"];
[alphabetsArray addObject:@"R"];
[alphabetsArray addObject:@"S"];
[alphabetsArray addObject:@"T"];
[alphabetsArray addObject:@"U"];
[alphabetsArray addObject:@"V"];
[alphabetsArray addObject:@"W"];
[alphabetsArray addObject:@"Y"];
[alphabetsArray addObject:@"X"];
[alphabetsArray addObject:@"Z"];
Run Code Online (Sandbox Code Playgroud)
[ 注意:您还可以根据dataArray创建带动态包含的alphabetsArray.为此我们如何在下面创建动态部分索引标题数组 ]
现在使用上面提到的方法来获得标题
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return alphabetsArray;
}
Run Code Online (Sandbox Code Playgroud)编写逻辑以滚动UITableView
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
for (int i = 0; i< [dataArray count]; i++) {
// Here you return the name i.e. Honda,Mazda
// and match the title for first letter of name
// and move to that row corresponding to that indexpath as below
NSString *letterString = [[dataArray objectAtIndex:i] substringToIndex:1];
if ([letterString isEqualToString:title]) {
[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
break;
}
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)****我们如何创建动态节索引标题数组****
让我们假设dataArray就是这样
[@"Honda",@"Maruti",@"Mazda",@"Toyota",.....]
Run Code Online (Sandbox Code Playgroud)创建一个创建动态部分索引标题数组的方法,如下所示
- (void)createAlphabetArray;
Run Code Online (Sandbox Code Playgroud)实现createAlphabetArray方法如下
#pragma mark - Create Alphabet Array
- (void)createAlphabetArray {
NSMutableArray *tempFirstLetterArray = [[NSMutableArray alloc] init];
for (int i = 0; i < [dataArray count]; i++) {
NSString *letterString = [[dataArray objectAtIndex:i] substringToIndex:1];
if (![tempFirstLetterArray containsObject:letterString]) {
[tempFirstLetterArray addObject:letterString];
}
}
alphabetsArray = tempFirstLetterArray;
[tempFirstLetterArray release];
}
Run Code Online (Sandbox Code Playgroud)现在只需要在想要更改alphabetsArray包含的地方调用它
[self createAlphabetArray];
Run Code Online (Sandbox Code Playgroud)现在,您可以根据dataArray内容动态创建动态节索引标题数组.
Dan*_*son 10
我认为表格视图需要按字母顺序分组 - 临时数组不知道如何将您选择的字母翻译成特定索引(它不知道"a","b"或"c"是什么意思).
如果您查看ipod歌曲列表,您会注意到每个字母组都有一个字母部分分隔符.您需要将表对象分组为以字母标题的部分,以便将字母"A"转换为索引.apple的ipod列表实际上做的不是滚动到第一个"A"条目,而是"A"部分的开头.
| 归档时间: |
|
| 查看次数: |
21029 次 |
| 最近记录: |