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

时间:2010-07-28 09:19:06

标签: iphone

  

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

有什么办法吗?

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:5)

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

self.navigationItem.titleView = searchBar ;

这应该有效,然后将搜索栏添加到UIView实例,然后将此视图分配给self.navigationItem.titleView。

答案 2 :(得分:1)

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

  

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

     

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