【问题标题】:Can you add a UITableViewController's TableView to another View?可以将 UITableViewController 的 TableView 添加到另一个 View 中吗?
【发布时间】:2009-07-02 03:58:33
【问题描述】:

我已将一个 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 来获得足够的布局,但我真的更喜欢使用其他技术。

【问题讨论】:

    标签: iphone objective-c interface-builder uitableview


    【解决方案1】:

    你在正确的轨道上!以下是您需要做的:

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

    2. 在 XIB 中添加 UITableView。

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

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

      (UITableViewCell *)tableView:(UITableView *)tv
          cellForRowAtIndexPath:(NSIndexPath *)indexPath
      

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

    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
    

    应该这样做!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多