如何在iphone的导航栏中添加搜索栏?

如何在iphone的导航栏中添加搜索栏?,iphone,Iphone,可能重复: 这是显示搜索栏的代码,但我想把它放在导航栏中 sBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,10,320,30)]; sBar.delegate = self; [self.view addSubview:sBar]; //[self.navigationItem.rightBarButtonItem addSubview:sBar]; //self.navigationItem.rightBarButtonItem

可能重复:

这是显示搜索栏的代码,但我想把它放在导航栏中

sBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,10,320,30)];

sBar.delegate = self;

[self.view addSubview:sBar];
//[self.navigationItem.rightBarButtonItem addSubview:sBar];
//self.navigationItem.rightBarButtonItem=sBar;

有什么办法吗?

您可以为导航栏的标题部分提供自定义视图。请查看,尤其是更新导航栏部分

导航控制器更新 导航栏的中间部分显示为 如下:

如果新的顶级视图控制器 有一个自定义的标题视图 导航栏在中显示该视图 默认标题视图的位置。到 指定自定义标题视图,设置 视图的titleView属性 控制器的导航项


将搜索栏作为标题视图添加到导航栏。此代码示例还包括通过将其添加为标题视图而获得的额外填充的修复

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(-5.0, 0.0, 320.0, 44.0)];
searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
UIView *searchBarView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 310.0, 44.0)];
searchBarView.autoresizingMask = 0;
searchBar.delegate = self;
[searchBarView addSubview:searchBar];
self.navigationItem.titleView = searchBarView;

可以将任何视图指定给导航项的titleView属性。你可以这样做

self.navigationItem.titleView = searchBar ;

这应该行得通,或者不行,然后将搜索栏添加到UIView实例,然后将此视图分配给self.navigationItem.titleView即可。

您已经有了另外两个问题,它们提出了同样的问题。我做了这个self.navigationItem.titleView=sBar;它正在工作,但我的搜索()没有工作,我做了这个bsBar.delegate=self;现在我是否遗漏了iPad上的其他内容?结果显示在弹出窗口中,而不是原始的表视图区域。有什么解决办法吗?我做了同样的事情,但我制作的早期版本和serachbar的IBoutlet写得很好,但它是滚动的,所以使用你的代码,我的serach函数不起作用??如何解决这个问题,我想我不需要从Iboutlet中省略delgate,你的建议是什么??如果我使用这个searchBara.delegate=self,我会非常担心;rootviewCnt没有刺穿UIseachbar委托协议,因为它的问题是结果显示在popover中嵌入的表视图中,而不是在原始表视图的框架中。有什么解决办法吗?这似乎是个好答案。我将把这个代码放在哪里?如果我复制并粘贴到名为
addSearchBarToNavigationBar
的方法中。我将在哪里调用该方法?我正在使用TableViewController