Можно ли программно установить источник данных UITableViewController? - PullRequest
2 голосов
/ 29 октября 2009

Я создал приложение, используя шаблон на основе навигации в XCode. Я также создал класс, который реализует протокол UITableViewDataSource и хотел бы использовать его для этого UITableView в RootViewController.

Я пытался установить свойство dataSource в viewDidLoad и во всех разновидностях инициализаторов, но не могу заставить его работать.

Как я могу это сделать?

В настоящее время я делаю следующее:

- (void)viewDidLoad {
    [super viewDidLoad];

    // The Navigation Controller uses this to display the title in the nav bar.
    self.title = @"Names";

    // Little button with the + sign on the right in the nav bar
    self.navigationItem.rightBarButtonItem = 
        [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showAddNameScreen)];

    // Set the data source and reload.
    [self.tableView setDataSource:[DataAcceess sharedInstance]];
    [self.tableView reloadData];
}

Но таблица просто остается пустой и методы источника данных никогда не вызываются (numberOfRowsInSection и cellForRowAtIndexPath)

Редактировать: Мой sharedInstance глючил и возвращал ноль. Никакие методы никогда не вызывались.

Ответы [ 4 ]

0 голосов
/ 29 октября 2009

Проблема заключалась в том, что у моего sharedInstance метода была ошибка, из-за которой он мог вернуть ноль. Поскольку отправка сообщений на nil молча игнорируется, в моем классе ничего не вызывалось.

0 голосов
/ 29 октября 2009

После установки источника данных вы вызывали reloadData, чтобы табличное представление использовало новый источник данных?

0 голосов
/ 29 октября 2009

Ваш источник данных таблицы возвращает ненулевое количество строк?

0 голосов
/ 29 октября 2009

Попробуйте

[self.tableView setDataSource:myDataSource];

Из подкласса UITableViewController (т. Е. self).

...