是否可以在UITableview中搜索静态单元格?

时间:2012-06-20 12:03:41

标签: objective-c cocoa-touch uitableview interface-builder

我有一个UITableView带有通过Interface Builder制作的静态单元格。

是否可以使用搜索栏搜索这些单元格?我一直试图实现它,但似乎无法到达任何地方。对于搜索栏,tableview必须使用动态单元格,还是可以使用静态单元格进行搜索,还是可以按单元格的标签进行搜索?

1 个答案:

答案 0 :(得分:1)

可以在表格中搜索静态单元格。但是,由于表格后面的数据源隐藏在UITableViewContoller中,因此您需要为搜索单元格本身添加“线索”。

我强烈建议不要使用标准单元格类,因为除了一两个标签外,它们不提供存储搜索数据的位置。但是,使用标签不是一个好的选择,因为它可能会妨碍您的本地化工作。

更好的方法是为UITableViewCell定义自定义类,引入要搜索的其他属性,通过Identity Inspector的“用户定义的运行时属性”部分在Interface Builder中设置这些属性,并使用UISearchBar启动的搜索过程中的这些属性。

以下是一个示例:为自定义单元格定义一个类

@interface SearchableTableViewCell : UITableViewCell
@property (readwrite, nonatomic) NSString *searchString;
@end

在每个静态单元格的Identity Inspector中,为类型选择SearchableTableViewCell。在“用户定义的运行时属性”面板中,单击[+],为类型选择“字符串”,为名称输入searchString,并将可搜索的内容设置为值。

现在,您的UISearchBarDelegate可以从UITableView dataSource获取单元格,将其转换为SearchableTableViewCell,并检查其searchString属性以确定是否为单元格应该包括在搜索结果中。

搜索结束后,您可能需要突出显示已找到的单元格,或者隐藏不符合搜索条件的单元格。虽然可以在不改变数据源的情况下完成突出显示,但隐藏需要更重要的覆盖。 Here is a question discussing approaches to hiding static cells in a UITableView

相关问题