将UITableView与TableViewController相关联

时间:2011-12-16 14:34:25

标签: objective-c xcode4 uitableview

任何人都可以描述如何使用一个TableViewController,其xib文件的根目录和uitableview作为子视图吗? 我相信TVController不知何故假设UITableView将填满整个区域。 这是为什么? 我非常需要构建一种以UITableView为主要区域的侧面和底部选项卡式界面。按标签会更改fetchedresultscontroller等的谓词。 我想要这个的原因是因为数据模型中数据类别的广度和深度。我需要大量压缩菜单结构......除了桌子和导航栏控制器结构之外,用户体验将类似于深入洞穴深处! 我的想法在其他范例中得到了尝试和实践......在iOS中它几乎看起来像是Apple的方式或高速公路。我对APPLE当然没有抱怨。 但我真的想创造这个。 我尝试添加一个新的tableviewcontroller完整的xib,然后删除IB中的UITableView并替换为UIView和UITableView作为子视图,连接(我相信)委托给文件的所有者。 我创建了一个IV tableView,用于何时我想引用它并再次使用IB将其连接到IB

尝试运行它,它会发出呜呜声......  [UITableViewController loadView]加载了“TabbedTableController”笔尖,但没有得到UITableView。 真的似乎无法理解这里的问题。 似乎我没有办法挂钩UITableView了!

任何帮助都会很棒。我绝望地会给你一张圣诞贺卡:^) 另外......为什么它应该如此,这个UITableView全屏的东西有多严格? 如果可以,请启发我。我读过的文档不想这样做。

此致 基思

1 个答案:

答案 0 :(得分:2)

UITableViewController确实假设根视图(即控制器的view属性)将是UITableView,因此表视图填充了屏幕。当你需要一个将UITableView与其他顶级视图结合起来的视图时,你需要做更多的工作,但这并不难:

您的视图控制器不会继承UITableView。相反,这样做:

@interface MyViewController : UIViewController 
  <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, weak) IBOutlet UITableView* tableView;

在Interface Builder中,放入UITableView以及您需要的其他控件。表视图可以是视图层次结构中的任何大小和任何位置。同样在Interface Builder中,从表视图中按住Ctrl键拖动到VC并设置delegatedataSource个出口,然后从VC拖动到表格视图以设置tableView出口。

您的视图控制器实现应该是典型的表视图控制器实现:cellForRowAtIndexPath等。

UITableViewController或多或少只是将上述所有工作打包到一个单元中。