我有一个UITableView
通过 Interface Builder 制作的静态单元格。
是否可以使用搜索栏搜索这些单元格?我一直在尝试实现它,但似乎无处可去。对于搜索栏,表格视图是否必须使用动态单元格,或者可以使用静态单元格进行搜索,还是可以通过单元格的标签进行搜索?
我有一个UITableView
通过 Interface Builder 制作的静态单元格。
是否可以使用搜索栏搜索这些单元格?我一直在尝试实现它,但似乎无处可去。对于搜索栏,表格视图是否必须使用动态单元格,或者可以使用静态单元格进行搜索,还是可以通过单元格的标签进行搜索?
可以在表格中实现静态单元格的搜索。但是,由于表格后面的数据源隐藏在 中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
。