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

Dan*_*son 31 iphone objective-c interface-builder uitableview

我已经插入了一个UITableViewController,并将它对应的UITableView放入一个简单的IB文档中.目标是将UITableView包含在父UIWindow(或UIView)中,其他"东西"(任何真正的东西)装饰在表中.这是Interface Builder中的样子.

在此输入图像描述

我已经尝试了很多次,总是到达同一个地方.

  1. 构建一个充满数据的UITableViewController的工作子类
  2. 自定义UTableView及其单元格,包括点击目标
  3. 将新创建的UITableViewController添加到IB文档中
  4. 将UITableView拖出UITableViewController并进入主UIView
  5. 将UITableViewController连接到UITableView
  6. 注意:在代码中添加UITableViewController会导致同样的问题

在iPhone模拟器或设备上运行应用程序时,表格会正确显示,但在您第一次尝试与其进行交互时会崩溃.滚动,点按,任何东西都会崩溃应用程序.这似乎是一个委托问题,就像UITableView不知道如何与UITableViewController进行通信,但我不知道如何纠正这个问题.

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

Ree*_*sen 32

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

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

  2. 在XIB中添加UITableView.

  3. 把一切都搞定了.视图控制器将是表的委托和数据源,因此您必须实现这两个协议.

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

    (UITableViewCell *)tableView:(UITableView *)tv
        cellForRowAtIndexPath:(NSIndexPath *)indexPath
    
    Run Code Online (Sandbox Code Playgroud)

您的头文件可能如下所示:

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
Run Code Online (Sandbox Code Playgroud)

应该这样做!