2016-05-14 6 views
0

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

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

UPDATE

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

- (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

Вы должны выслать свой код. Мне кажется, проблема в другом месте. Кроме того, почему вы хотите перезагрузить весь вид таблицы при выборе ячейки? Просьба описать фактическую цель, которую вы пытаетесь достичь, вместо того, чтобы искать решение для неработоспособной попытки. – ozgur

ответ

0

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

2

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

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]; 
    }); 
+0

Это не исправляет мою проблему. Методы NumberOfRowsInSection возвращают no.of строк. Но он не вставлен в UITableView. Это происходит только в iPad. Мой оригинальный код хорошо работает в iPhone. Мне интересно, что может быть проблемой – user5553647

+0

Попробуйте переместить весь мой код из dispatch_after() в dispatch_async (dispatch_get_main_queue(),^{}); , убедитесь, что вы выбрали метод выбора делегата из таблицы, когда этот блок кодового вызова. – kaushal

+0

Я не уверен в поведении вашего кода с iPhone и iPad. :) – kaushal

 Смежные вопросы

  • Нет связанных вопросов^_^