iphone - проблема с прокруткой UITableView - PullRequest
2 голосов
/ 29 апреля 2011

Я создал TableView в своем приложении с 5 разделами в нем.

Разделы 1 - 4 содержат только одну строку для каждой минуты, а раздел 5 содержит 5 строк.

Все работает нормально, пока я не прокручиваю TableView с экрана. В моем первом разделе и строке (ячейке) у меня accessoryView установлен на UILabel с некоторым текстом в нем.

Каждая вторая ячейка имеет кнопку раскрытия в качестве accessoryType.

Когда я прокручиваю tableView, текст, который у меня есть в первой ячейке, каким-то образом появляется в последней ячейке!?

Я настроил свои данные, добавив NSStrings в массив, а затем добавив их в качестве словарей в NSMutableArray.

А вот и моя камера:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

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

   // UISwitch *aUISwitch = [[[UISwitch alloc]initWithFrame:CGRectZero]autorelease];

    // Configure the cell. 

    NSDictionary *dictionary = [listOfSettings objectAtIndex:indexPath.section];
    NSArray *array = [dictionary objectForKey:@"Settings"];
    NSString *cellValue = [array objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;

    if([cellValue isEqualToString:@"Status"]){
        UILabel *viewLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 20)];
        [viewLabel setText:@"Connected"];
        cell.accessoryView = viewLabel;
        [viewLabel release];

    }
    else{
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    }
    return cell;
}

Я знаю, что клетки удаляются / удаляются, когда они уходят с экрана, поэтому я предполагаю, что это как-то связано с этим? Какова рекомендуемая практика для работы с клетками, которые выходят за пределы экрана и появляются снова?

1 Ответ

1 голос
/ 29 апреля 2011

просто с первого взгляда ... в операторе else вам нужно не только установить cell.accessoryType, но и установить cell.accessoryView = nil;

accesoryView все еще там, поскольку ячейка была переработана.

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