【问题标题】:Adding UISearchBar as tableHeaderView in xib not works在 xib 中将 UISearchBar 添加为 tableHeaderView 不起作用
【发布时间】:2011-10-01 07:54:22
【问题描述】:

我将UISearchBar 添加为xib 中UITableView 的tableHeaderView,只需将UISearchBar 放到UITableView 上。 当表格超过 6 行时,它工作正常。 但是当行数少于 6 时,UITableView 不会滚动。

同时,如果我使用以下语句在 .m 文件中以编程方式将 UISearchBar 添加为 UITableView 的 tableHeaderView,一切正常。

tableViewTemp.tableHeaderView = searchBarFriends; 

对我来说似乎很奇怪, 可能是什么问题?

请指教,谢谢。

【问题讨论】:

    标签: iphone objective-c uitableview uisearchbar


    【解决方案1】:

    这是我做的一个小技巧 ;) 不要让 SearchBar 成为 UITableView 的子视图。只需在您的 nib 文件中添加它们的实例,并将它们作为 IBOutlets 连接到您的 UITableViewController 中。然后您要做的是将 SearchBar 设置为表格的标题视图,这样您就不必担心帧重叠和干扰触摸事件。以下是你的做法:

    在 TableView 头文件中创建属性

    @property ( nonatomic, retain ) IBOutlet UISearchBar *searchBar;
    

    为您的表格设置标题视图:

    - (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
        return self.searchBar;  // The property you wired up in IB
    }
    

    设置标题或 (UISearchBar) 的高度

    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
        return 44; // The height of the search bar
    }
    

    这就是你所需要的。现在,如果您有一个分组的 tableview 或一个包含多个部分的表格,这可能不是最好的解决方案,但它对于一个简单的表格来说是一个干净的解决方案。否则,您必须在代码中调整搜索栏和表格视图的框架,因为它们重叠,这就是您遇到触摸问题的原因。希望这会有所帮助!

    【讨论】:

    • 谢谢你,杰瑞,我会试试的。
    • 我在我的应用程序中使用过它,应该像一个魅力一样工作。如果确实如此,请将其标记为已接受;)
    【解决方案2】:

    如果您添加如下层次结构的搜索栏,它将起作用

    【讨论】:

    • 我只添加了这样的好友,但是当少于 6 条记录时,它使 UITableView 无法滚动。
    • 好的,谢谢 Narayana,所以可能是其他问题。我会检查我的代码。
    【解决方案3】:

    我遇到了几乎相同的问题(对我来说,它根本不会滚动任何数量的行,但只要我删除了搜索栏,它就会滚动)。修复它在viewDidLoad 中添加这个:

    self.tableView.alwaysBounceVertical = YES;
    

    【讨论】:

    • 谢谢 pt2ph8,我也试试这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2016-12-01
    • 1970-01-01
    相关资源
    最近更新 更多