Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GCD将数据加载到UITableview_Uitableview_Grand Central Dispatch - Fatal编程技术网

使用GCD将数据加载到UITableview

使用GCD将数据加载到UITableview,uitableview,grand-central-dispatch,Uitableview,Grand Central Dispatch,下面的代码通过获取一个google新闻RSS提要来解析XML并将其放入视图,从而将数据加载到UITableView中。它可以工作,但当我按下另一个视图并返回时,表视图滚动条已损坏。我已将问题与GCD代码隔离。如果我移除它,问题就会消失。下面是GCD代码: - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"View did load .."); self.title = @"News stories"; New

下面的代码通过获取一个google新闻RSS提要来解析XML并将其放入视图,从而将数据加载到UITableView中。它可以工作,但当我按下另一个视图并返回时,表视图滚动条已损坏。我已将问题与GCD代码隔离。如果我移除它,问题就会消失。下面是GCD代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"View did load ..");
    self.title = @"News stories";

    NewsItem *item = [[NewsItem alloc] init];
    item.title = @"Loading ...";

    self.newsItems = [@[item] mutableCopy];
    NSString *URL = @"http://news.google.com/news?q=apple+OR+google+OR+microsoft&output=rss";
    NSURL *xmlURL = [NSURL URLWithString:URL];
    NSURLRequest *request = [NSURLRequest requestWithURL:xmlURL];
    Parser *parser =  [[Parser alloc] initXMLParser];;

    dispatch_queue_t downloadQueue = dispatch_queue_create("news downloader", NULL);

    dispatch_async(downloadQueue, ^{
        BOOL success;
        NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

        if (data != nil) {

            NSXMLParser *nsXmlParser = [[NSXMLParser alloc] initWithData:data];

        // create and init our delegate


        // set delegate
            [nsXmlParser setDelegate:parser];

        // parsing...
            success = [nsXmlParser parse];
        }

        else {
            success = FALSE;
        }
        // test the result
        dispatch_async(dispatch_get_main_queue(), ^{
        if (success) {

                NSLog(@"reloading data ...");
                self.newsItems = [parser.newsItems copy];
                [self.tableView reloadData];

        } else {
                 NewsItem *item = [[NewsItem alloc] init];
                item.title = @"Error loading";

                self.newsItems = [@[item] mutableCopy];
                [self.tableView reloadData];


            NSLog(@"Error parsing document!");
        }

        });


    });



}

尝试
[self.tableView reloadData]
视图中显示

你说的“滚动已损坏”是什么意思?它只滚动了一部分。。很难描述。。如果我按下另一个视图控制器并弹回来,它会把桌面视图弄得一团糟,并且不会从屏幕边缘滚动出去。如果我删除GCD调用,就会发生这种情况。当您离开具有动态内容的表视图时,返回时发现它的状态是未定义的<代码>视图显示
是用于此目的的其他内容之一。谢谢。。你就是那个男人!!我不知道。我在哪里可以读到这种东西(哪本苹果指南)?和