如何模仿UISearchBar';iOS中Safari的行为
我在导航栏的标题视图中有一个如何模仿UISearchBar';iOS中Safari的行为,ios,objective-c,uinavigationbar,uisearchdisplaycontroller,Ios,Objective C,Uinavigationbar,Uisearchdisplaycontroller,我在导航栏的标题视图中有一个UISearchBar(看起来像下图),我想让它像Safari浏览器中的一样工作 我没有足够的声誉来发布图片,这里是链接 第一张照片 第二张照片 我想要实现的是: 在正常状态下,导航栏包含两个左右按钮、一个UISearchBar和该搜索栏内的一个清除按钮(看起来像是第一张带有两个附加按钮的图片) 在搜索状态下,视图被另一个视图替换,当它被解除时,视图恢复到原始状态 可以在iOS 6和iOS 7中使用 我知道这可以通过使用UISearchDisplayContr
UISearchBar
(看起来像下图),我想让它像Safari浏览器中的一样工作
我没有足够的声誉来发布图片,这里是链接
第一张照片
第二张照片
我想要实现的是:
- 在正常状态下,导航栏包含两个左右按钮、一个
和该搜索栏内的一个清除按钮(看起来像是第一张带有两个附加按钮的图片)李>UISearchBar
- 在搜索状态下,
被另一个视图
替换,当它被解除时,视图
恢复到原始状态视图
- 可以在iOS 6和iOS 7中使用
UISearchDisplayController
实现,但它不起作用。这是我的密码:
.h:实现TableView的数据源/委托、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中,UISearchDisplayController
的视图
(灰色视图)没有覆盖主视图,Resultable
没有重新加载数据,即使它能够过滤搜索字符串。(我必须使用KVO来显示它)
在iOS 6中,灰色的东西覆盖了所有的屏幕,键盘没有显示(它立即消失)
有人能帮忙吗?
谢谢。我已经两次做了一个与您描述的非常相似的UI,最近一次是iOS 7的
UISearchBar
行为更接近Twitter。如果要在UINavigationBar
中显示UISearchBar
,请完全忘记该设置,因为您可能会遇到障碍,如(尽管)
而不是假装。将导航栏隐藏在UIViewController
中,对于iOS 7使用高度为64
的UIView
,对于iOS 6使用高度为44
的UIView
并将其置于顶部,使其看起来像一个导航栏。将UISearchBar
像普通子视图一样添加到其中,然后在UISearchBarDelegate
方法中根据需要设置动画