Ячейка UITableView исчезает при выходе из таблицы, а затем возвращается к - PullRequest
1 голос
/ 08 декабря 2011

У меня есть вид таблицы.я могу добавлять и удалять клетки.скажем, я добавляю 5. Когда я покидаю табличное представление (переключаем представления) и возвращаюсь к табличному представлению, ячейки исчезают.Почему это происходит?Кроме того, как я мог это исправить?Спасибо!

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

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

         stepper = [[UIStepper alloc]init];
         [stepper setFrame:CGRectMake(216, 22, 100, 30)];
         NSLog(@"the stepper is %@", stepper);
         [cell addSubview:stepper];

         cellLabel = [[UILabel alloc]init];
         [cellLabel setFrame:CGRectMake(65, 22, 27, 27)];
         [cellLabel setText:@"1"];
         [cell.contentView addSubview:cellLabel];
    } 
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    cell.imageView.image = [imageArray objectAtIndex:indexPath.row];    
   // cell.textLabel.text = [cells objectAtIndex:indexPath.row];
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle5.png"]]) {
        [cellLabel setFrame:CGRectMake (175, 22, 30, 30)];
    }
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle4.png"]]) {
        [cellLabel setFrame:CGRectMake (150, 22, 30, 30)];
    }
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle3.png"]]) {
        [cellLabel setFrame:CGRectMake (120, 22, 30, 30)];
    }
    if ([cell.imageView.image  isEqual:[UIImage imageNamed:@"paddle2.png"]]) {
        [cellLabel setFrame:CGRectMake (90, 22, 30, 30)];
    }
return cell;
}

NumberOfRows

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

CommitEditingStyle:

- (void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
 forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        [[self cells] removeObjectAtIndex:[indexPath row]];
        [[self imageArray]removeObjectAtIndex:[indexPath row]];

        NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
        [[self myTableView] deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
    }
}

1 Ответ

3 голосов
/ 08 декабря 2011

Похоже, в вашем коде tableView:commitEditingStyle:forRowAtIndexPath: отсутствует часть того, что нужно делать при вставке:

else if (editingStyle == UITableViewCellEditingStyleInsert) {
    [[self imageArray] insertObject:... atIndex:...];
}

Без этого кода ваш imageArray имеет только старые объекты при переключениии возвращайсяВы также должны инициировать перезагрузку данных из модели в конце метода:

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