4

我知道有一个属性searchDisplayController.searchBar.showsScopeBar,但在我的发现中,即使我们设置showsScopeBar为 NO,但将其searchDisplayController.searchBar.scopeButtonTitles属性设置为某个数组,范围栏也会显示指定的标题。设置showsScopeBar为 YES 和设置scopeButtonTitlesnil不会显示scopeBar.

所以,我认为showsScopeBar属性确实没有用,但显示或隐藏scopeBar实际上取决于我们是否将数组设置为scopeButtonTitles属性。

这可能吗?还是我错过了其他东西。

4

2 回答 2

1

确保您的 UISearchBar 在范围栏出现时有一个可以延伸的空间。我犯了一个错误,将 UISearchBar 放在 320x44px 的固定框架内,当范围栏打开时,它根本没有空间可见(320x88px)。UISearchBar 也位于表格的标题视图中,也必须被告知刷新。

[self.tableView beginUpdates];
[self.searchBar setShowsScopeBar:YES]; 
[self.tableView endUpdates];
于 2013-10-23T10:59:28.647 回答
0

首先,准确地说,showsScopeBar 和 scopeButtonTitles 是 UISearchBar 类的属性。

它是这样的:

  • 如果 scopeButtonTitles 有值并且 showsScopeBar == NO
    范围按钮只会在用户单击搜索文本框后出现。

  • 如果 scopeButtonTitles 有值并且 showsScopeBar == YES
    范围按钮甚至在用户单击搜索文本框之前显示。
    (很丑,别走这条路)

  • 如果 scopeButtonTitles 为 nil
    ,则无论 showScopeBar 值或用户交互如何,都不会显示范围按钮。

您可以使用 Interface Builder 来玩它:
单击“搜索栏”控制器并转到“属性检查器”选项卡。

于 2013-01-21T16:34:22.327 回答