2

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

是否可以使用搜索栏搜索这些单元格?我一直在尝试实现它,但似乎无处可去。对于搜索栏,表格视图是否必须使用动态单元格,或者可以使用静态单元格进行搜索,还是可以通过单元格的标签进行搜索?

4

1 回答 1

1

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

我强烈警告不要使用标准单元类,因为除了一两个标签之外,它们没有提供存储您搜索的数据的地方。然而,使用标签并不是一个好的选择,因为它可能会妨碍您的本地化工作。

更好的方法是为您UITableViewCell的 . UISearchBar.

这是一个示例:为您的自定义单元格定义一个类

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

在每个静态单元格的 Identity Inspector 中,选择SearchableTableViewCell类型。在 User Defined Runtime Attributes 面板中,单击 [+],类型选择“字符串”,searchString名称输入,并将可搜索内容设置为值。

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

搜索结束后,您可能需要突出显示已找到的单元格,或隐藏不符合搜索条件的单元格。虽然可以在不更改数据源的情况下进行突出显示,但隐藏需要更重要的覆盖。这是一个讨论隐藏静态单元格的方法的问题UITableView

于 2012-12-21T15:28:59.450 回答