导航栏的UISearchBar
中有一个titleView
(如下图所示),我希望它能像Safari浏览器中的那样工作。
我没有足够的声誉来发布图片,这是链接
第一张图片
第二张照片
我想要达到的目标是:
UISearchBar
和搜索栏内的清除按钮(看起来像带有2个加法按钮的第一张图片)。 view
被另一个view
取代,当它被解雇时,view
又回到原始状态。我知道这可以通过使用UISearchDisplayController
来完成,但它不起作用。这是我的代码:
.h :实施TableView's DataSource/Delegate, UISearchDisplayDelegate, UISearchBarDelegate
的.m
-(void) viewDidload
{
//Add left, right buttons
self.leftButton = [[UIBarButtonItem alloc] init];
[self.leftButton setStyle:UIBarButtonItemStylePlain];
[self.leftButton setTitle:@"Button"];
self.navigationItem.leftBarButtonItem = self.leftButton;
self.rightButton = [[UIBarButtonItem alloc] init];
[self.rightButton setStyle:UIBarButtonItemStylePlain];
[self.rightButton setTitle:@"Button"];
self.navigationItem.rightBarButtonItem = self.rightButton;
self.searchBar = [[UISearchBar alloc] initWithFrame:self.navigationController.navigationBar.bounds];
if (DEVICE_IS_IOS7) {
self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
}
self.navigationItem.titleView = self.searchBar;
self.searchBar.delegate = self;
//----------------
self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
}
/*
table implementation
*/
在iOS 7中,view
UISearchDisplayController
(灰色的)没有覆盖主视图而resultTable
没有重新加载数据,即使它能够过滤搜索串。 (我不得不用KVO来显示它)
在iOS 6中,灰色的东西覆盖了所有屏幕,键盘没有显示(它立即消失)。
有人可以帮忙吗? 谢谢。
答案 0 :(得分:1)
我曾经两次不得不做一个与你所描述的非常相似的用户界面,最近的一个更接近Twitter的iOS 7&#39 {1}行为。如果您想在UISearchBar
内显示UISearchBar
,请完全忘记该设置,因为您可能会遇到障碍,例如this(尽管it seems fixed by Apple)。
相反假。隐藏UINavigationBar
中的导航栏,并为iOS 7使用UIViewController
的高度为UIView
,为iOS 6使用64
并将其置于顶部,以便其显示像导航栏。像普通子视图一样在其中添加44
,然后在UISearchBar
方法中根据需要设置动画。