在UITableView中显示元素,如iPhone联系人,分为字母部分?

时间:2012-01-24 04:18:40

标签: iphone objective-c arrays uitableview sorting

我一直在网上寻找解决方案,但我似乎找不到任何东西,而且我被卡住了。

我有一个NSMutableArray:

productsToDisplay

由一堆Product对象组成,每个对象都有一个'name'属性,例如

Product *product = ....

NSLog(@"%@", product.name);

每个单元格显示一个产品名称,单击此按钮可显示有关该产品的更多信息。

但是我有很多产品,并希望将它们分成UITableView中的字母部分(就像iPhone上的联系人一样)。

有人能指出我正确的方向吗?

非常感谢,

杰克

[编辑] 我意识到我可以在name属性上对数组进行排序,但我还想在UITableView的右侧运行快速搜索栏,以便用户可以轻松找到他们正在寻找的部分。

2 个答案:

答案 0 :(得分:4)

使用此委托显示右侧部分列表: -

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return searchArray; 
}

根据右侧列表使用此委托关联表格内容(部分): -

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
    if (index == 0) {
    [tableView scrollRectToVisible:[[tableView tableHeaderView] bounds] animated:NO];
        return -1;
    }
    return index;
}

答案 1 :(得分:3)

在你的tableview中添加字母部分,然后你必须创建与tableview中的部分相对应的字母数组。如[0]部分 - 'A',部分[1] - 'B'等

添加 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {     返回键; } //委托要求在索引中显示值的数组。

因此,此数组中的第一项将把用户带到第一部分,即第0部分。