Обновление пользовательского изображения кнопки после прокрутки UITableView - PullRequest
0 голосов
/ 21 ноября 2011

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

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

Мне просто любопытно, есть ли какое-то исправление для этого?

Мой код выглядит примерно так:

мой код для cellForRowAtIndexPath выглядит следующим образом:

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

                static NSString *CellIdentifier = @"CustomTableCell";

                CustomTableCell *cell = (CustomTableCell *)
                [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

                if (cell == nil) {

                    [[NSBundle mainBundle] loadNibNamed:@"CustomTableCell" 
                    owner:self options:nil];

                     cell = tableCell;

                    self.tableCell = nil;
                }

                CheckBox *chkBox = [[CheckBox alloc] init];
                chkBox.frame = CGRectMake(10.0, -10.0, 50.0, 70.0);
                [cell.contentView addSubview:chkBox];
                [chkBox release];

                cell.modelLabel.text = 
  [[[[[self regData] ShoppingCart] objectForKey:@"Cart"] 
  valueForKey:@"Model"] objectAtIndex:indexPath.row];

                // Configure the cell...
                return cell;
            }

Я еще не реализовал метод didSelectRowAtIndexPath, поскольку предполагается, что этот метод выведет зрителя на более новый экран с дополнительной информацией.

1 Ответ

1 голос
/ 22 ноября 2011

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

Вы не хотите делать это каждый раз:

CheckBox *chkBox = [[CheckBox alloc] init];
chkBox.frame = CGRectMake(10.0, -10.0, 50.0, 70.0);
[cell.contentView addSubview:chkBox];
[chkBox release];

Делайте это только в том случае, если это новая ячейка ... однако, добавив флажок в качестве подпредставления и затем освободив его, вы все равно потеряете к нему доступ. Чтобы получить к нему доступ, вам нужно будет перебрать подпредставления ячейки, найти флажок типа «тип» и посмотреть, проверен ли он. Было бы лучше, если бы в вашем CustomTableCell было установлено свойство Checkbox, чтобы вы могли легко получить к нему доступ.

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