0

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

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

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

在您问之前,如果我将 SearchBar 放在第一级 TableView 上,它会显示得很好。是的,我将它添加到 TableView 本身,所以它是应该显示的视图的一部分。

帮助!我究竟做错了什么?

XIB 文件

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

搜索栏不显示?

4

3 回答 3

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]];

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

于 2010-12-09T02:33:51.697 回答
0

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

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

于 2010-12-07T05:21:27.503 回答
0

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

于 2011-06-29T00:14:09.277 回答