Заполнение TableView данными объекта по нажатию кнопки в UIViewController - PullRequest
0 голосов
/ 10 декабря 2011

Я пытаюсь заполнить TableView, расположенный в UIViewController, набором объектов при нажатии кнопки.

Проблема в том, что cellForRowAtIndexPath, похоже, ожидает, что «голоса» будут объектом, который создан, а это не так, пока кнопка не будет нажата.

Я не уверен, что поступлю правильно, и был бы признателен за любую помощь, которую мне мог бы оказать.

Я указал делегата и источник данных следующим образом:

@interface MyViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>

Я завершил реализацию numberOfRowsInSection следующим образом:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.votes count];
}

Я завершил реализацию cellForRowAtIndexPath следующим образом:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Votes";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // Configure the region cell
    CandidatePhrase *phrase = [self.votes objectAtIndex:indexPath.row];
    cell.textLabel.text = phrase.phrase;

    return cell;

}

При нажатии кнопки я загружаю массив со списком объектов

_votes = [[NSArray alloc] initWithObjects:myCandidatePhrase.votes, nil];

Теперь я понимаю, как будет привязываться таблица при каждом нажатии кнопки.

Вот ошибка, которую я сейчас получаю, предположительно, потому что массив голосов не был создан?

2011-12-09 22:34:48.979 MyApp[3809:fb03] -[NSObject tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x6b49b20

1 Ответ

1 голос
/ 10 декабря 2011

Экземпляр tableView (не контроллер представления) будет вызывать свои методы делегата, как только он будет создан и всякий раз, когда ему сообщают об изменении представления таблицы. Поэтому не имеет значения, создан ли экземпляр votes или нет для вызова метода делегата.

Однако, если вы хотите, чтобы он знал, что нет строк, когда votes не был создан, попробуйте это

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (votes != nil)
        return [self.votes count];
    else
        return 0;
}

После создания экземпляра votes вы хотите вызвать reloadData для вашего tableView.

Не забудьте добавить свой контроллер представления в качестве делегата для tableView, если это еще не сделано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...