我有一个UITabBar控制器管理多个控制器(使用SDK 3.0)。 其中一个是一个的tableView控制器,我需要提供使用UISearchDisplayController搜索能力。 我所有的代码是基于苹果TableSearch例子。 然而,在选项卡上单击时,该控制器的tableView出现显示其相关的内容,但并未显示搜索栏。 我已经检查了IB的厦门国际银行,以确保所有网点的设置是否正确,但无论我怎么努力self.searchDisplayController永远是零和搜索栏没有显示。
在实践中我从TableSearch例如复制MainView.xib和文件的所有者类设置为标签正确的控制器类。 出口是一组如在示例MainView.xib。 我失去了任何重要的一步或做错了什么?
先感谢您。
Answer 1:
我有同样的问题,一旦发生了这种解决方案绊倒...
如果你有你的表视图控制器(例如, UISearchDisplayController
)使用界面生成器嵌套在标签栏或导航控制器,你需要在“属性检查器”窗口中设置“笔尖名称”。
笔尖名称将是拥有表视图,并具有控制器(例如,在一个UISearchDisplayController
)作为文件的所有者。
Answer 2:
我也有这个问题:(是搜索栏得到隐藏在背后的tableview?
@unforgiven,你试试这个...?
searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 40)];
[self.tableView setTableHeaderView: searchBar];
这种手动创建一个搜索栏,它的作品。 但我在做一些IB愚蠢的错误,搜索栏没有显示出来,尽管我的连接是完美的。 :-(
如果你得到的答案不要更新这个帖子...
Answer 3:
好吧,我已经找到了如何解决它。 就我而言,这个问题是由于这样的事实,我使用嵌入的UITabBarController内,其管理的选项卡(即作为一个孩子)的控制器。
从取出的UITabBarController控制器,然后加入的UINavigationController到的UITabBarController代替,终于把我的控制器作为的UINavigationController的孩子完全解决了这个问题。
我不明白为什么会是这样(有文档中没有相关信息,经常发生); 然而,它现在就像一个魅力。 亲切的问候。
Answer 4:
我有一个类似的问题
为了解决我必须做一个额外的步骤unforgivens答案在我的主要笔尖
1)创建UITabController 2)然后我拖出一个UINavigational控制器进入的标签控制器3)然后拖出一个UITableViewController到NavigationalController作为子4)然后改变(3)类是我在检查员MyTableWithSearchBarViewController - 检查是否笔尖名正确,并且如果必要的话在检查员以及5更改此),那么我不得不删除这是自动由IB在步骤(3)产生的的tableView。 只有这样,在搜索栏中正确显示...
如果在第3步我拖出不同的控制器走上舞台或离开的tableView有它永远只能显示表,而不是搜索栏
奇怪的
Answer 5:
Tomtrapeze有正确的答案,如果你的笔尖文件包含的UITableViewController。 但是,如果您加载代码的UITableViewController - 比如推一个UINavigationController的堆栈 - 该解决方案是一个有点不同。
当初始化的UITableViewController或子类,则需要使用-initWithNibName:包:形式的初始化,并注明您的笔尖文件的名称。 另外,还可以使用标准的-initWithStyle:初始化和手动加载视图之前设置nibName属性。
如果当视图被加载的nibName属性没有设置,会的UITableViewController不使用正常的UIViewController笔尖查找逻辑。 这将只需要加载一个标准的UITableView代替。
Answer 6:
我最近才知道,我可以加载带有NIB文件[[MyViewController alloc] initWithNibName:nil bundle:nil];
当NIB文件具有相同的名称作为类(即MyViewController.xib
)。 事实证明,初始化这样会导致“的UISearchBar and
UISearchBarDisplayController`不显示。 当我初始化通过实际打字之类的名称视图控制器,我的搜索栏显示正确。 我最初以为是有东西做我是如何呈现的视图控制器,但是很高兴,这是不是。
PGWSearchViewController *searchVC = [[PGWSearchViewController alloc] initWithNibName:@"PGWSearchViewController" bundle:nil];
searchVC.modalPresentationStyle = UIModalPresentationFullScreen;
searchVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:searchVC animated:YES completion:^{ }];
这是使用的是iOS SDK 5.1和4.3.1的XCode。
Answer 7:
这对我的作品的另一种可能的解决方法是用initWithNibName给init的UITableViewController:包:
SearchEntryTableViewController* searchEntryTableViewController = [[SearchEntryTableViewController alloc]initWithNibName:@"SearchEntryTableViewController" bundle:nil];
要嵌套的UITableViewController在一个UINavigationController之前把它在一个的UITabBarController不解决这个问题对我来说...
文章来源: How to use UISearchDisplayController from a controller within an UITabBar controller?