那里有大量的示例代码,我以为我是按行排队的;我的代码:
(void)viewDidLoad
{
[super viewDidLoad];
// init search bar
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
searchBar.delegate = self;
searchBar.showsCancelButton=YES;
// set up searchDisplayController
UISearchDisplayController *searchController = [[UISearchDisplayController alloc]
initWithSearchBar:searchBar contentsController:self];
searchController.delegate = self;
searchController.searchResultsDataSource = self;
searchController.searchResultsDelegate = self;
// display search bar in nav bar
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
}
使用该代码,我不应该看到导航栏中显示的搜索栏吗?我在导航栏中看到的只是取消按钮。我在头文件中声明了协议<UISearchDisplayDelegate, UISearchBarDelegate>
。我错过了什么,或者可能出现什么问题?感谢
注意:
使用self.navigationItem.titleView = searchBar
,搜索栏会按预期显示。我想知道较新的{{1}}方法的优点是什么..
- 由tassilo编辑 -
看起来搜索栏已添加到导航栏,但随后消失。
答案 0 :(得分:1)
displaySearchBarInNavigationBar属性使搜索栏在用户点击时滑入导航栏,就像Apple Mail应用程序中发生的那样。您仍然需要将搜索栏添加到视图中。
最好的方法是将UITableViewController的tableHeaderView设置为搜索栏。
self.tableView.tableHeaderView = self.searchBar;
答案 1 :(得分:1)
这一行是你的问题。
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
self.searchDisplayController
与您创建的searchDisplayController
不同。
所以只需将self.searchDisplayController
替换为searchDisplayController
即可。另外,请确保您没有@synchronize searchDisplayController;