我刚刚开始使用ios,我被UITableView
困住了。
我想在视图的右侧实现索引栏。我已经实现了这个,但当我点击索引栏上的部分时,它无法正常工作。
这是我的代码。这里indexArray
为“A-Z”元素,finalArray
为UITableView
可变数组。
请告诉我应该在sectionForSectionIndexTitle
中实施什么。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [finalArray count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection: (NSInteger)section
{
return [finalArray objectAtIndex:section];
}
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
return indexArray;
}
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle: (NSString *)title atIndex:(NSInteger)index
{
}
答案 0 :(得分:7)
这可能是UITableViewDataSource
中最令人困惑的方法之一,最好考虑一个例子:
假设您有一个包含4个项目的表格视图:
section index - 0 section title - 'A'
items: ['Apple', 'Ant']
section index - 1 section title - 'C'
items: ['Car', 'Cat']
然后你有26个部分索引标题(表格视图右侧的索引):A - Z
现在,用户点击字母'C'即可接听
tableView:sectionForSectionIndexTitle:@"C" atIndex:2
您需要返回1 - “C”部分的部分索引。
如果用户点击'Z',您还必须返回1,因为您只有2个部分且C最接近Z.
在简单的情况下,您在表视图中具有相同的部分,因为右侧的索引可以执行此操作:
- (NSInteger)tableView:(UITableView *)tableView
sectionForSectionIndexTitle:(NSString *)title
atIndex:(NSInteger)index
{
return index;
}
否则取决于您的设置。您可能需要在章节标题中查找标题:
NSInteger section = [_sectionTitles indexOfObject:title];
if (section == NSNotFound) // Handle missing section (e.g. return the nearest section to it?)