在我点击 tableView 之前,不会显示 tableView 中的数据

Posted

技术标签:

【中文标题】在我点击 tableView 之前,不会显示 tableView 中的数据【英文标题】:Data in tableView aren't displayed until I tap on tableView 【发布时间】:2015-11-12 21:15:14 【问题描述】:

你能帮帮我吗

我正在实施 OAuth 应用程序:

用户正在通过从代码打开的 webView 进行授权,并且正在关闭代码 然后在后台发送 2 个请求 - 一个请求令牌,第二个请求数据 然后接收到的数据应该出现在 tableView 的屏幕上 所有数据都通过块接收,因为所有请求都是异步的 当数据被接收到 tableViewController - 我为表调用 reloadData 方法 主要问题是只有当我点击表格(在任何地方)时,数据才会出现在表格中。一旦我了解问题在于 webView 出现和消失的方式,但无法修复它。

这是调用 webView 的方式:

    CGRect rect = self.view.bounds;
    rect.origin = CGPointZero;
    UIWebView *webView = [[UIWebView alloc] initWithFrame:rect];
    webView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    [self.view addSubview:webView];
    self.webView = webView;

这是关闭 webView 的方式:

        self.webView.delegate = nil;
        if (self.completionBlock) 
            self.completionBlock(dict);
        
        [self dismissViewControllerAnimated:YES completion:nil];

这是tableViewController中接收数据的方法:

- (void)loginButtonPressed:(UIButton *)button 
    [[ServerManager sharedInstance] authorizeUser:^(NSArray *data) 
        self.demoDataArray = data;
        NSLog(@"%@", self.demoDataArray);

        [self.tableView reloadData];

        NSArray *subviews = [self.view subviews];
        for (UIView *subview in subviews) 
            if (subview.tag == MY_CUSTOM_TAG) 
                [self.view bringSubviewToFront:subview];
            
        

    ];

我什至尝试将 tableView 作为子视图放在前面 - 但它也不起作用

【问题讨论】:

tableview 是否在主线程上重新加载数据调用? 不,它在从异步请求返回接收数据的块内调用。 【参考方案1】:

对不起,我还不能发表评论,因为我没有足够的声誉,但就像 Sandeep 提到的,在使用 dispatch_async(dispatch_get_main_queue()) 加载数据后,您必须在主线程上重新加载表视图。你检查过这个吗?

【讨论】:

有效!谢谢你。我认为它应该可以正常工作,因为我正在使用块来获取异步请求中的数据。但正如我所见,尽管如此,UI 应该在主队列中有所更新

以上是关于在我点击 tableView 之前,不会显示 tableView 中的数据的主要内容,如果未能解决你的问题,请参考以下文章

QML TableView 鼠标区域不会将点击传播到选择模型

UITableView 永远不会在其委托上调用 tableView:shouldShowMenuForRowAtIndexPath:

关闭操作表时,ios tableview不会向上滚动

iOS 为啥我的应用程序在重新启动之前不会将数据加载到 tableview 中?

CKAsset 不会显示在 tableview 图像中

如何在 ipad 中的 tableview 单元格上显示弹出框单击