Работя по проект за Iphone. Имам в историята myViewController
съдържащи малко UILabel
s и a UITableView
, Споменатите UITableView
се отнася в клас myViewController от IBOutlet:
IBOutlet UITableView *myTable;
Сега създавам UITableViewController (myTableViewController), че искам да попълвам myTable. След това се връщам в myViewController и разпределям тук myTableViewController:
MyTableViewController *myTableViewController = [[MyTableViewController alloc] init];
myTableViewController.tableView = myTable;
myTableViewController.tableView.delegate = myTableViewController;
myTableViewController.tableView.dataSource = myTableViewController;
Не работи (грешка в EXC_BAD_ACCESS). Обикновено трябва да попълвам myTable чрез UIViewController (като се уверя, че отговаря на nedeed протоколи). Но аз наистина се чудя дали мога да направя това, което направих точно горе.
Отговори:
0 за отговор № 1Повечето случаи можете да решите това, като създадетеUIViewController и препратка към таблицата вътре в ViewController, използвайки IBOutlet. Има обаче случаи, в които се нуждаете от пълен разперен UITableViewController, например в основни данни, и бихте искали също така да добавите неща като UIToolbars. Знам, че много пъти можете да пробиете UINavigationController, но понякога не искате йерархия / стека. В такъв случай, съвсем рядко, един от начините да направите това е да създадете подклас UITableViewController. да го инициализирате във вашия клас UIViewController, да създадете изход от tableView, който се намира във вътрешността на сцената на UIViewController и след това да присвоите свойството tableView на UITableViewController в изхода tableView на UIViewController.
self.instanceOfUITableVC.table = self.tableView
Това е малко сложно, но работи. Сега можете да контролирате таблицата с помощта на подклас UITableViewController.