gpt4 book ai didi

ios - dispatch_queue_t 和 TableView

转载 作者:行者123 更新时间:2023-11-29 10:52:35 27 4
gpt4 key购买 nike

我是 Objective-C 语言的菜鸟,我有一点小问题。事实上,我有 2 个 TableView,当我从一个转到另一个时,我从互联网上解析了一些 XML。解析进行得很好,但我想在这两个 View 之间添加一个 UIActivityIndi​​catorView 以告诉用户正在加载某些内容。因此,为此,我想在另一个线程中进行解析并在主线程中显示 UIActivityIndi​​catorView。所以这是我的代码:

- (void)viewDidLoad
{
[super viewDidLoad];
UIActivityIndicatorView *activityIndicator;
activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicator.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
activityIndicator.center = self.view.center;
[self.view addSubview: activityIndicator];
activityIndicator.startAnimating;

dispatch_queue_t queue = dispatch_get_global_queue(0,0);

dispatch_async(queue, ^{
NSError *error = nil;
// we will put parsed data in an a array
titles = [[NSMutableArray alloc] init];
urls = [[NSMutableArray alloc] init];

CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:_emissionSelectionnee] options:0 error:&error];
NSArray *nodes = NULL;
nodes = [rssParser nodesForXPath:@"//rss/channel/item/title" error:nil];
for (CXMLElement *title in nodes) {
[titles addObject:[title stringValue]];
}

nodes = NULL;
nodes = [rssParser nodesForXPath:@"//rss/channel/item/enclosure" error:nil];
for (CXMLElement *url in nodes) {
[urls addObject:[[url attributeForName:@"url"] stringValue]];
}
dispatch_sync(dispatch_get_main_queue(), ^{
activityIndicator.stopAnimating;
});
}
}

现在,UIActivityIndi​​cator 出现了,但是单元格是空的。当我不使用 dispatch_queue_t 时,它运行良好。

有人有想法吗?

提前致谢!

最佳答案

您需要重新加载您的 TableView (在您隐藏事件指示器的同一 block 中):

[self.tableView reloadData]

关于ios - dispatch_queue_t 和 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19841365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com