Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何模仿UISearchBar';iOS中Safari的行为_Ios_Objective C_Uinavigationbar_Uisearchdisplaycontroller - Fatal编程技术网

如何模仿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
方法中根据需要设置动画