我有一个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文件中完成此操作。
非常感谢任何帮助。
答案 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];
}