如何在TableViewController上方添加一个UIView?

4
我想在我的表格视图上方显示一个UIView,为了测试目的,我使用了一个搜索栏(以消除任何可能存在的代码问题)。
我的设置如下: 标签栏控制器 MyCustomTableViewController View     TableView(用于自定义单元格高度)     Searchbar 我将搜索栏放置在“窗口”的顶部,并向下拉动表格视图,使其直接位于搜索栏下方。 因此,在IB中一切看起来都很好。 但是当我启动应用程序时,表格视图占据了整个屏幕,而搜索栏则无处可寻。
我对iPhone开发还相当陌生,所以可能存在非常简单的解决方案(?)。 /Jimmy
2个回答

4
真正简单的解决方案是:
  • 创建一个自定义的UIViewController子类,实现UITableViewDelegateUITableViewDataSource,就像UITableViewController一样。还要添加一个UITableView outlet。
  • 在XIB文件中,将搜索栏和UITableView放置在视图控制器的视图中。
  • 将表视图连接到自定义UIViewController中的tableView outlet
  • UITableView的代理和数据源连接到File's Owner(实现正确代理的自定义UIViewController
现在你有了一个自定义的视图控制器,它的工作方式就像一个UITableViewController,只不过你完全控制它的布局。你以相同的方式实现代理。

运行得非常好 =)。 (澄清一下:将自定义的UIView放置在XIB文件中,而不是我最初认为的自定义UIView的XIB中)。谢谢。 - Jimmy Engtröm

1
如果您的 MyCustomTableViewController 实际上是一个 UITableViewController,那么您会注意到在 IB 中,“view”出口直接指向您的 UITableView,而不是 IB 中的根 UIView。这是 UITableViewController 对象的默认行为。只需将“view”出口重定向到根 UIView,一切都应该正确显示。

MyCustomTableViewController是从UITableViewController派生的类,因为我想让表格视图包含自定义单元格。 似乎我的MyCustomTableViewController上缺少“View”插座,有什么想法为什么会这样,以及如何恢复它? - Jimmy Engtröm
不行。UITableViewController 期望视图指向 UITableView,如果你将其改为指向其他类型的视图,它会完全失败。 - Stefan Arentz
当然。我忘记了我通常会将UITableViewController的超类也更改为UIViewController。这样我就不必编写表视图委托/数据源方法了。 - Matthew McGoogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接