NIB文件在运行时不显示

时间:2010-12-07 04:54:19

标签: iphone uitableview uisearchbar xib uisearchdisplaycontroller

我正在把头发拉出来。我有一个带有两级TableView的NavigationController。每个TableView都在其自己的NIB文件中。第一级只显示一个列表。在选择单元格后,它会将用户带到具有更详细列表的第二级TableView。在这个二级TableView上我想显示一个搜索栏(实际上我也在使用SearchDisplayController)。我已将它添加到TableView中,因为我希望SearchBar与表一起滚动。

下面,我将显示两个屏幕截图。第一个是InterfaceBuidler中的第二级tableview。第二个是运行时的第二级tableview。出于某种原因,SearchBar不会在运行时显示。

我尝试过从头开始创建一个全新的项目,同样的事情发生了。我不明白为什么SearchBar不会在NavigationController上推送的NIB上显示。

在你问之前,如果我将SearchBar放在第一级TableView上,它就会显示出来。是的,我将它添加到TableView本身,因此它是应该显示的视图的一部分。

帮助!我做错了什么?

XIB File

这是推送XIB后实际显示的内容......

SearchBar Doesn't Display?

3 个答案:

答案 0 :(得分:1)

好的,我将不得不回答我自己的问题。我想删除它,但也许这可以帮助别人。我真的把头发拉出来了。这不是因为我做错了,而是因为对iPhone开发的工作方式存在根本性的误解。

简而言之,问题出在这行代码中,它实例化了TableViewController:

self.downloadDetailViewController = [[DownloadDetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];

使用XCode创建新类时,可以使用以下命令:

“添加 - >新文件 - > Cocoa Touch类 - > UIViewController子类 - > UITableViewController 子类AND用XIB表示用户界面“

问题是NIB与UITableViewController完全无关,除非你告诉你的代码使用它。对我来说,这似乎是XCode中的一个错误,或者至少是违反直觉的错误。当开发环境将所有三个文件一起创建时,只有它们可以一起工作才有意义,但它们不能。

相反,解决方案是修改代码行,如下所示:

self.downloadDetailViewController = [[DownloadDetailTableViewController alloc] initWithNibName:@"SecondaryView" bundle:[NSBundle mainBundle]];

希望这可以帮助别人...

答案 1 :(得分:0)

我认为问题在于您将搜索栏添加到tableView,因此它不会显示。

尝试添加该searchBar而不添加到表视图,这意味着将表视图向下移动一些,并将搜索栏添加到视图(而不是tableview)。

答案 2 :(得分:0)

您还可以在选项卡栏控制器下的下载视图控制器上设置Nib Name属性,实际上,加上使用您的类名设置类将自动为您创建视图,您不必手动创建它