2013-11-19 3 views
1

У меня есть UITableViewController и не хочу использовать раскадровку.Как изменить класс UITableView программно?

Как я знаю, UITableViewController заботится о инициализации UITableView, подключая его к его источнику данных и делегированию. Это хорошо работает в моем случае.

Теперь я хотел бы изменить класс UITableView на пользовательский класс (BVReorderTableView). Это было бы легко сделать в IB. Однако, как только я сделаю это программно, мой UITableView пуст, то есть он, кажется, отключен от своего источника и делегата.

Вот что я делаю в моей инициализации в UIViewController:

-(id)init 
{ 
    self = [super initWithStyle:UITableViewStyleGrouped]; 
    if (self) { 
     // Custom initialization 
     self.tableView = [[BVReorderTableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped]; 
     self.tableView.dataSource = self; 
     self.tableView.delegate = self; 
} 

Что я делаю неправильно?

+0

Вы проверили источник данных? Являются ли методы делегатов запущены (NSLog в них)? – Bourne

+1

Я бы реализовал это в viewDidLoad, а не в init. – Cutetare

+0

- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath не запускается @Bourne. Но - (NSString *) tableView: (UITableView *) tableView titleForHeaderInSection: (NSInteger) раздел ... как проверить источник данных? Я имею в виду, что все хорошо, если я не использую свой собственный класс BVReorderTableView. Большое спасибо! –

ответ

1

Вы должны осуществить это в viewDidLoad вместо инициализации из-за жизненный цикл ViewController. В viewDidLoad он уже имеет все объекты, которые будут использоваться, что не обязательно верно во время init.

Вы можете проверить this question для получения дополнительной информации о жизненных циклах ViewController. :)

1

Пожалуйста, установите UITableView в viewDidLoad метод не в init метод. В представлении метода инициализации будет инициализироваться до того, как в нем будут содержаться наблюдения.

Надеется, что это помогает

Смежные вопросы