跨 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 像素,然后将搜索栏添加为我的UIViewControllerview 的子视图。那行得通,但我不能使用表格索引向上滚动到搜索栏,因为它不是表格视图中的单元格。我需要在表格视图本身中有搜索栏。

我的目标是在多个表格视图的第一部分中拥有相同的UISearchBar

非常感谢。

【问题讨论】:

【参考方案1】:

如前所述,您可能希望将搜索栏放在UITableViewtableHeaderView 属性中,这会将其放在表格的顶部,而无需进行手动定位。不过,我不确定这如何与索引一起使用。

至于分享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 实例的主要内容,如果未能解决你的问题,请参考以下文章

跨各种 UITableViews 的 UITableViewCell 原型单元格

数字IC设计——跨时钟域篇4(多比特处理)

数字IC设计——跨时钟域篇4(多比特处理)

数字IC设计——跨时钟域篇4(多比特处理)

数字IC设计——跨时钟域篇4(多比特处理)

Laravel 4.1 身份验证会话数据不会跨请求持久化