gpt4 book ai didi

ios - 索引 UITableView,如 Contacts.app

转载 作者:行者123 更新时间:2023-12-01 17:56:14 25 4
gpt4 key购买 nike

我想复制 Contacts.app 的滚动条行为。

我知道你必须实现这两种方法:

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

这就是我所做的:第一个返回 A 到 Z 的字符数组,第二个返回索引。
到目前为止,它工作得很好:我得到了滚动条,滚动它会使 UITableView 滚动。

但我有两个问题:

首先,问题是,如果我没有字母 C 的联系人,那么滚动显然会交错,滚动 C 将显示 D 索引,滚动 D 将显示 E 索引...
我虽然关于搜索最近的部分,但这是最有效的方法吗?
像在我的类里面实现这个功能的东西:
- (NSInteger) getSectionIndexForSectionTitle:(NSString *section) {
if ([_allSections objectForKey:section] == nil) {
NSComparisonResult res = NSOrderedAscending;
for (NSString* sectionTitle in _allSections) {
NSComparisonResult tmp = [sectionTitle compare:section];
if (tmp == NSOrderedDescending && res == NSOrderedAscending)
return [(NSNumber *)[_allSections objectForKey:sectionTitle] intValue];
res = tmp;
}
return [_allSections count] - 1;
}
return [(NSNumber *)[_allSections objectForKey:section] intValue];
}

但我担心这种解决方案可能会提供糟糕的性能。

第二个问题,可能与第一个问题有关:在 Contacts.app 中,您看不到滚动条中的“O”字母,但您仍然可以滚动到此部分。
关于如何实现这一目标的任何想法?

感谢您阅读和帮助我!

最佳答案

您不需要破解节标题的高度。有一个专为您正在寻找的目的而设计的类:UILocalizedIndexedCollat​​ion。在 using it to get index scrolling in a table view 上有一篇很棒的文章.

关于ios - 索引 UITableView,如 Contacts.app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17123529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com