如何在UITabBar控制器中使用UISearchDisplayController从控制器?(Ho

2019-07-31 21:39发布

我有一个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?