在我点击 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: