TableView reloadData не обновляет интерфейс в iPad, но работает в iPhone

У меня странная ошибка. я использую UITableView который должен быть перезагружен при выборе строки. Это прекрасно работает в симуляторе iPhone. Пока работает в iPad, didSelectRowAtIndexPath вызывается, но пользовательский интерфейс не обновляется. Я пытался вызвать метод reloadData в основной теме. Это все то же самое.

Я пробовал различные решения в stackru. Ничто, казалось, не решало мою проблему.

ОБНОВИТЬ

Когда я выберу ячейку, будет добавлена ​​новая ячейка. Поэтому мне нужно перезагрузить мой просмотр таблицы, чтобы отобразить динамическое изменение. Разместил мой код ниже

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath
{
NSUInteger count=indexPath.row+1;

NSMutableArray *insertIndexPaths = [NSMutableArray array];

[insertIndexPaths addObject:[NSIndexPath indexPathForRow:count inSection:indexPath.section]];

switch (indexPath.row) {
        case 0:
    {
    if ([ItemsInSection[indexPath.section] count]==1){
                [ItemsInSection[indexPath.section] addObject:obj2];

                [TabView beginUpdates];
                [TabView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];

                [TabView endUpdates];        
            }
            else {

                [ItemsInSection[indexPath.section] removeAllObjects];
                [ItemsInSection[indexPath.section] addObject:obj1];

                [self.TabView reloadData];

            }
        }
            break;

        case 1:

    {if ([ItemsInSection[indexPath.section] count]==2){
                [ItemsInSection[indexPath.section] addObject:obj3];

                [self.TabView beginUpdates];
                [TabView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];
                [self.TabView endUpdates];

            }
            else
            {
                [ItemsInSection[indexPath.section] removeAllObjects];
                [ItemsInSection[indexPath.section] addObject:obj1];
                [ItemsInSection[indexPath.section] addObject:obj2];

                [self.TabView reloadData];
              }
        }
            break;

        case 2: {

            if ([ItemsInSection[indexPath.section] count]==3) {
                 [ItemsInSection[indexPath.section] addObject:obj4];
                [self.TabView beginUpdates];
                 [TabView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];
                [self.TabView endUpdates];

            }
            else
            {
                [ItemsInSection[indexPath.section] removeObject:obj4];
                [self.TabView beginUpdates];
                 [TabView deleteRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationLeft];

                [self.TabView endUpdates];

            }
          }
            break;

                  default:
            break;
    }

}

2 ответа

Решение

Я нашел решение для этой проблемы. Цвет фона UITableViewCell был установлен, чтобы очистить цвет и цвет фона UIView на UITableViewCell также был установлен, чтобы очистить цвет. Изменение этих настроек отображало вставку строк в UITableView в симуляторе iPad.

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

   dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(),^{
          [self.aiTableView beginUpdates];
          // your table view selection code
          [self.aiTableView endUpdates];
     });  
Другие вопросы по тегам