Пользовательская ячейка iPhone с UISegmentedControl

Я создал настраиваемую ячейку с UISegmentedControl и загрузил ячейку, например,

static NSString *CellIdentifier = @"Cell";

SegmentedCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) 
{
    NSArray *cells =[[NSBundle mainBundle] loadNibNamed:@"SegmentedCell" owner:nil options:nil];

    for (UIView *view in cells) 
    {
        if([view isKindOfClass:[UITableViewCell class]])
        {
            cell = (SegmentedCell *)view;
            [cell.SegmentedControl addTarget:self
                                                  action:@selector(segmentedControlChanged:)
                                        forControlEvents:UIControlEventValueChanged];        


        }
    }
}

cell.textLabel.text = @"Sample";
cell.selectionStyle = UITableViewCellSelectionStyleNone;

Пользовательская ячейка успешно загружена, и я получаю действие SegmentedControl. Но когда я прокручиваю представление таблицы, состояние SegmentedControl изменяется.


person Guru    schedule 03.07.2012    source источник
comment
Это потому, что вы повторно используете ячейки.   -  person Dustin    schedule 03.07.2012


Ответы (1)


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

  • Настройте сегментированный элемент управления так, чтобы его значение сохранялось в переменной при каждом нажатии.
  • Поместите это значение в массив
  • В методе cellForRowAtIndexPath извлеките переменную из массива и установите для значения сегментированного элемента управления это значение переменной.
person Dustin    schedule 03.07.2012