在我点击tableView

时间:2015-11-12 21:15:14

标签: ios objective-c uitableview webview

你能帮帮我吗

我正在实施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作为子视图放在前面 - 但它也不起作用

1 个答案:

答案 0 :(得分:0)

抱歉,我还没有评论,因为我没有足够的声誉,但是像Sandeep提到的那样你必须在主线程上重新加载表视图在数据加载了dispatch_async(dispatch_get_main_queue())之后。你看过这个吗?