我似乎无法让UISearchBar在导航栏中从最左侧定位到最右侧。在-(空)viewDidLoad方法中,我有以下代码:
UISearchBar *sb = [[UISearchBar alloc] initWithFrame:self.tableView.tableHeaderView.frame];
sb.delegate = self;
self.navigationItem.titleView = sb;
[sb sizeToFit];
[sb release];当您构建并运行时,乍一看,它看起来很好。然而,仔细观察,你可以看出左边有一个空白处。这在大计划中不是什么大问题,但当我点击搜索栏开始搜索时,我将cancel按钮动画显示在视图中。由于搜索栏的位置稍微靠右,因此动画不稳定,cancel按钮从末端脱落,如下所示:link text
UINavigationItem看起来就像是一个有三个单元格的表格,在第一个和最后一个单元格上有一个我无法删除的填充--也没有一种方法可以将它们“合并”在一起,然后将搜索栏放在那里。我知道这种外观是可能的,因为AppStore搜索在导航栏中有一个搜索栏,它一直到边缘。谁知道如何让搜索栏一直到边缘,这样我的滑入取消按钮动画才能正常工作?
发布于 2010-03-17 01:06:30
我想我找到了答案--尽管我还没有测试来验证。在我上面提供的问题中,我有以下结构:
选项卡栏控制器->导航控制器->视图控制器
所讨论的搜索栏位于视图控制器中,而视图控制器位于导航控制器中,而导航控制器位于选项卡栏中。
我偶然看了斯坦福大学计算机科学193P (2009年春季)课程,在第13课结束时,答案可能已经提出。Alan Cannistraro表示,在线状态应用程序的结构应该具有这样的结构:
this structure http://img143.imageshack.us/img143/6/viewcontrollerstructure.jpg
其中底部视图控制器(与选项卡栏控制器相邻)是具有搜索栏控件的视图控制器。他警告说,如果不这样做,你会“遇到问题”。可能是我面临的问题?我相信是这样的。
发布于 2010-05-15 10:07:30
下面的代码只隐藏此UIViewController的navigationBar:
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO animated:animated];
}因此,为了让UISearchBar显示在UINavigationBar的位置,在根视图控制器上只需在导航栏通常所在的位置放置搜索栏即可!
发布于 2009-10-24 01:08:37
也许苹果正在使用UISearchDisplayController来做这类事情。
https://stackoverflow.com/questions/1614687
复制相似问题