1

我有一个 UIViewController (StoreViewController),它的 .xib 是左边的 UITableView,右边是标准的 UIView。我创建了一个名为 StoreTableController 的 UITableViewController,并希望以某种方式使其成为 StoreView.xib 中表视图的控制器。

不幸的是,我需要将 nib 文件的文件所有者保留为 StoreViewController。我在 StoreTableController 中有一个委托,它已设置为 StoreViewController(这是用于调用某些方法),在 StoreViewController 中有一个 StoreTableController 的实例。

到目前为止,我已经尝试在 StoreViewController 中保留 UITableView 的出口,然后执行以下操作:

[self addChildViewController:self.tableController];

[self.tableController setTableView:self.table];

[self.table setDataSource:self.tableController];
[self.table setDelegate:self.tableController];

其中 self.table 是 outlet,self.tableController 是 StoreTableController 的实例。

但是,我并不完全理解如何使用 UIViewController 包含,所以这显然是不正确的。

我也尝试过这种变化,但真的不知道该怎么做。

我已经避免在这里使用 UISplitViewController 了,因为不仅左视图比右视图大,而且我计划做很多事情,这意味着如果可能的话,这必须在单个 .xib 文件中完成。

很感谢任何形式的帮助。

4

1 回答 1

2

首先,在您的.xib中放置一个常规UIView而不是 UIScrollView 。将其与称为“tableContentView”的连接。IBOutlet

然后,在您的代码中创建一个UITableViewController(或您的自定义类,派生自UITableViewController)的新实例,并将其添加UIView到 tableContentView 中,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //  Add tableView
    UITableViewController *someTableViewController = [[UITableViewController alloc] init];
    someTableViewController.view.frame = self.tableContentView.bounds;
    someTableViewController.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    [self.tableContentView addSubview:someTableViewController.view];        
}
于 2012-10-29T09:43:33.120 回答