2010-07-28 123 views
5

可能重复:
How to add serach bar in navigation bar for 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; 

有什么办法?

+0

你已经有另外几个问题提出了同样的问题。 – 2010-07-28 09:26:06

回答

1

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

导航控制器更新 中间的导航栏作为 如下:

如果新的顶级视图控制器 有一个自定义标题视图中, 导航栏显示,在 的地方观看的默认标题视图。若要 指定自定义标题视图,请设置 控制器的导航项目的视图的标题视图属性 。

+0

我做了这个self.navigationItem.titleView = sBar;它的工作,但我的搜索()不工作 我做了这个bsBar.delegate = self;现在我缺少其他任何东西 – ram 2010-07-28 10:04:30

+0

在iPad上结果显示在popover中,而不是在原始表格视图区域中显示。任何解决方案? – Norbert 2013-10-05 08:56:13

24

将搜索栏作为标题视图添加到导航栏。此代码示例还包括通过将其添加为标题视图来解决您的额外填充问题。

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; 
+0

我做了同样的事情,但我做的earler和IBoutlet的serachbar很好,但这是滚动,所以使用你的代码我的serach函数不工作?如何解决,我认为我不需要从Iboutlet中省略你的建议? 如果我使用这个searchBara.delegate = self, rootviewCnt doest没有impalement UIseachbar委托协议 – ram 2010-07-28 10:08:51

+0

我有问题,结果显示在嵌入在弹出窗口,而不是原始表视图的框架中的表视图。任何解决方案? – Norbert 2013-10-05 08:55:03

+0

这似乎是一个很好的答案。我会在哪里放置这段代码?如果我将其复制并粘贴到名为'addSearchBarToNavigationBar'的方法中。我会在哪里调用该方法?我正在使用TableViewController – learner 2014-07-17 17:00:03

5

您可以将任何视图分配给导航项目的titleView属性。你可以这样做。

self.navigationItem.titleView = searchBar ; 

这应该锻炼身体,或没有再加入搜索栏UIView的实例,然后分配这个观点self.navigationItem.titleView会做。