TableView reloadData 不会在 iPad 中更新 UI,但在 iPhone 中有效

TableView reloadData doesn't update UI in iPad , but works in iPhone

我有一个奇怪的错误。我正在使用 UITableView ,当一行得到 selected 时必须重新加载。这在 iPhone 模拟器中工作正常。当 iPad 中的 运行 被调用时, didSelectRowAtIndexPath 被调用但 UI 没有被更新。 我尝试在主线程上调用方法 reloadData。还是一样。

我在 Whosebug 中尝试了各种解决方案。似乎没有什么能解决我的问题。

更新

当我select一个单元格时,将添加新的单元格。所以我需要重新加载我的 tableview 来显示动态变化。 在下面发布我的代码

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

}

您正在 table 视图委托中重新加载 table 视图,在 table 视图选择委托方法上有其关联的选择动画过程。所以我会建议你将这个方法中的所有代码移动到单独的方法中。并调用该方法。

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

我已找到解决此问题的方法。 UITableViewCell 的背景色设置为透明色,UITableViewCell 上的 UIView 的背景色也设置为透明色。更改这些设置会在 iPad 模拟器中显示 UITableView 中的行插入。