2012-06-20 48 views
2

我有一个UITableView与通过Interface Builder制作的静态单元。是否有可能在UITableview中搜索静态单元格?

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

回答

1

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

我会强烈告诫不要使用标准电池类,因为它们提供了无处存放在其上进行搜索,除了一个或两个标签中的数据。然而,使用标签不是一个好选择,因为它可能会妨碍您的本地化工作。

一个更好的方法是定义一个定制类的UITableViewCell,引入附加属性上进行搜索,通过用户自定义运行时设置在界面生成器这些属性的属性标识督察的部分,并在使用这些属性由UISearchBar发起的搜索。

这里有一个例子:定义一个类为您的自定义单元格

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

在每个静态细胞的身份检查,选择SearchableTableViewCell的类型。在用户自定义运行时属性面板中,单击[+],选择类型为“字符串”,对于名称输入searchString,并设置搜索内容到值。从UITableViewdataSource

现在你UISearchBarDelegate可以采取细胞,将它们转换成SearchableTableViewCell,并检查他们的searchString属性,以确定单元应纳入搜索结果还是不行。

当你的搜索结束后,你可能需要强调的是已发现的细胞,或隐瞒不符合搜索条件的单元格。虽然突出显示可以在不更改数据源的情况下完成,但隐藏需要更重要的覆盖。 Here is a question discussing approaches to hiding static cells in a UITableView

相关问题