ViewController中的TableViewController

时间:2012-10-29 09:32:33

标签: objective-c ios xcode uiviewcontroller uitableview

我有一个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文件中完成此操作。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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];        
}