你可以将UITableViewController TableView添加到另一个View吗?

时间:2009-07-02 03:58:34

标签: iphone objective-c interface-builder uitableview

我已经将UITableViewController和它对应的UITableView插入到一个简单的IB文档中。目标是将UITableView包含在父UIWindow(或UIView)中,其他“东西”(任何真正的东西)装饰在表中。以下是Interface Builder中的内容。

enter image description here

我已经多次尝试并且总是到达同一个地方。

  1. 构建一个充满数据的UITableViewController的工作子类
  2. 自定义UTableView及其单元格,包括点击目标
  3. 将新创建的UITableViewController添加到IB文档中
  4. 将UITableView拖出UITableViewController并进入主UIView
  5. 将UITableViewController连接到UITableView
  6. 注意:在代码中添加UITableViewController会导致同样的问题
  7. 在iPhone模拟器或设备上运行应用程序时,表格会正确显示,但在您第一次尝试与其进行交互时会崩溃。滚动,点按,任何东西都会崩溃应用程序。这似乎是一个委托问题,就像UITableView不知道如何与UITableViewController进行通信,但我不知道如何纠正这个问题。

    到目前为止,我已经能够通过自定义tableHeaderView来获得足够的布局,但我真的更喜欢使用其他技术。

1 个答案:

答案 0 :(得分:32)

你走在正确的轨道上!这是你需要做的:

  1. 创建一个标准的UIViewController子类及其附带的视图xib。

  2. 在XIB中添加UITableView。

  3. 连接所有内容。视图控制器将是表的委托和数据源,因此您必须实现这两种协议。

  4. 在您的实现文件中,添加tableview所需的所有必要数据源和委托方法:

    (UITableViewCell *)tableView:(UITableView *)tv
        cellForRowAtIndexPath:(NSIndexPath *)indexPath
    
  5. 您的标头文件可能如下所示:

    MyViewController.h

    @interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
    {
        IBOutlet UITableView *myTableView;
        //This outlet is only necessary if you need to send messages to the table view (such as reloadData)
    }
    @end
    

    应该这样做!