1

我正在做一个 Iphone 项目。在情节提要中,我myViewController包含了几个UILabels 和一个UITableView. UITableViewIBOutlet 在 myViewController 类中引用了上述内容:

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 (确保它符合需要的协议)。但我真的想知道我是否可以做我上面所做的事情..

4

1 回答 1

0

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

self.instanceOfUITableVC.table = self.tableView 

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

于 2013-10-12T17:25:20.350 回答