UIViewController里面的UITableViewController

时间:2012-08-09 10:07:20

标签: iphone uiviewcontroller uitableview iboutlet

我正在开发一个Iphone项目。在故事板中,我myViewController包含少量UILabelUITableView。 所提到的UITableView在myViewController类中由IBOutlet引用:

IBOutlet UITableView *myTable;

现在我构建了一个我想要填充myTable的UITableViewController(myTableViewController)。 然后我回到myViewController,我在这里分配myTableViewController:

MyTableViewController *myTableViewController = [[MyTableViewController alloc] init];
myTableViewController.tableView = myTable;
myTableViewController.tableView.delegate = myTableViewController;
myTableViewController.tableView.dataSource = myTableViewController;

无效(EXC_BAD_ACCESS错误)。 通常我应该通过UIViewController填充myTable(确保它符合nedeed协议)。但我真的很想知道我能不能做到我上面做的事情。

1 个答案:

答案 0 :(得分:0)

大多数情况下,您可以通过使用IBOutlet创建UIViewController和ViewController内部表的引用来解决此问题。但是,有些情况下你需要一个完整的UITableViewController,比如在核心数据中,你也希望能够添加像UIToolbars这样的东西。我知道,很多时候你可以破解UINavigationController,但有时候你不需要层次结构/堆栈。在这种情况下,诚然相当罕见,一种方法是创建一个UITableViewController子类。您可以在UIViewController类中导入并初始化它,从位于UIViewController的nib / scene中的tableView创建一个插座,然后将UITableViewController的tableView属性分配给UIViewController的tableView插座。

self.instanceOfUITableVC.table = self.tableView 

这有点复杂,但它确实有效。现在,您可以使用UITableViewController子类实例来控制tableView。