Проблемы с настройкой свойств и выполнением действий с ячейкой табличного представления вне cellForRowAtIndexPath: - PullRequest
0 голосов
/ 27 января 2012

У меня есть пользовательская ячейка просмотра таблицы, на которую я создаю указатель в заголовке моего контроллера представления и инициализирую внутри cellForRowAtIndexPath

 if ([[cellOrder objectAtIndex:indexPath.section] isEqualToString:@"balanceCell"]) {

    balanceCell = (BalanceCell *) [tableView dequeueReusableCellWithIdentifier:@"balanceCell"];

    if (balanceCell == nil) {   
        NSArray *nib =   [[NSBundle mainBundle] loadNibNamed:@"BalanceCell" owner:self options:nil];
        balanceCell = (BalanceCell*) [nib objectAtIndex:0];
    }   

    return balanceCell;
}

У меня есть только один экземпляр balanceCell в табличном представлении, поэтому я предположил, что если бы я хотел установить какие-либо свойства ячейки, я мог бы просто сослаться на balanceCell

Однако это не работает. Когда пользователь нажимает кнопку, вызывается следующий метод (я убедился, что он на самом деле вызывается). Однако методы, вызываемые в ячейке баланса, не работают.

- (void)addBalanceCell {

[cellOrder addObject:@"balanceCell"];
[table reloadData];

balanceCell.leftEquation = equationCell.leftView.equationOrder; 
balanceCell.rightEquation = equationCell.rightView.equationOrder;

[balanceCell setUpText]; // not called

}

Как правильно ссылаться на balanceCell?

1 Ответ

0 голосов
/ 27 января 2012

Ну, это не способ построения интерфейса, но у вас должен быть массив, который функционирует как ваш источник данных. Этот источник данных должен содержать объекты, которые определяют BalanceCell. Если вы не можете управлять этими объектами и перезагрузить таблицу, возможно, вы захотите изменить ее так.

UITableViewCell следует в основном использовать как представление, средство для отображения данных, модели, которые хранятся где-то еще, иначе как в источнике данных.

В тот момент, когда вы делаете «addBalanceCell», вы должны создать новый экземпляр объекта dataObject и управлять своими данными здесь. После того, как вы управляете данными, которые вам нужны, вы можете просто добавить if в свой источник данных и обновить таблицу, что означает, что вы создали новую ячейку, поскольку в источнике данных есть новая запись.

Точно так же, как вы обновляете эти ячейки, получая доступ к этим объектам данных в вашем источнике данных. Вы можете запросить объект в вашем источнике данных и управлять им так, как вы этого хотите. Если вы затем обновите таблицу, ячейка должна обновить себя новыми данными.

Короче говоря, ваша ячейка должна в основном содержать средства для отображения данных, а не сами данные.

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