跨 4 个单独的 UITableView 持久化单个 UISearchBar 实例
Posted
技术标签:
【中文标题】跨 4 个单独的 UITableView 持久化单个 UISearchBar 实例【英文标题】:Persisting a single UISearchBar instance across 4 separate UITableViews 【发布时间】:2010-04-04 05:18:05 【问题描述】:我正在使用一个 iPhone 应用程序,它需要 4 个独立的 UITableView
对象共享对上述UITableView
对象的第一部分和第一行中的一个 UISearchBar
的访问权限。
我尝试将UITableView
的框架偏移44 像素,然后将搜索栏添加为我的UIViewController
的view
的子视图。那行得通,但我不能使用表格索引向上滚动到搜索栏,因为它不是表格视图中的单元格。我需要在表格视图本身中有搜索栏。
我的目标是在多个表格视图的第一部分中拥有相同的UISearchBar
。
非常感谢。
【问题讨论】:
【参考方案1】:如前所述,您可能希望将搜索栏放在UITableView
的tableHeaderView
属性中,这会将其放在表格的顶部,而无需进行手动定位。不过,我不确定这如何与索引一起使用。
至于分享UISearchBar
,我想不出一个很好的理由来代替每个表格视图都有一个——内存差异应该可以忽略不计,设置和取消设置委托和诸如此类的东西可能是一个严重的问题麻烦。您想共享搜索栏是否有特殊原因?如果想要持久化,可以将搜索栏文字保存在viewWillDisappear
,设置在viewWillAppear
。
如果你真的想把搜索栏放在第一个单元格中,而不是表头,你可以这样做:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = //etc, normal cell creation
if (indexPath.section == 0 && indexPath.row == 0)
[cell addSubview:self.searchBar];
return cell;
但在表格标题中放置搜索栏更为常见,也更易于管理。
【讨论】:
【参考方案2】:当您在它们之间切换时,您可以简单地将 UISearchBar 添加为每个 tableView 的标题视图。
[oldTableView setTableHeaderView:nil];
[newTableView setTableHeaderView:searchBar];
当然,我完全有可能误解了你想要做的事情。如果是这种情况,请详细说明。
【讨论】:
以上是关于跨 4 个单独的 UITableView 持久化单个 UISearchBar 实例的主要内容,如果未能解决你的问题,请参考以下文章