【问题标题】:self.tableView reloadData not working after successful call in AFNetworking在AFNetworking中成功调用后self.tableView reloadData不起作用
【发布时间】:2014-07-24 16:39:51
【问题描述】:

我有一个运行类似于本教程http://www.raywenderlich.com/59255/afnetworking-2-0-tutorialAFHTTPSessionManager 组件的类

但是,[self.tableView reloadData] 对我不起作用。

我的管理器是这样实现的:

-(void) refresh{
     manager = [[AFHTTPSessionManager...] iniwithBaseURL:...];
     [manager Get:... parameters:... success:^(NSURLSessionDataTask *task, id responseObject){
         //test success values in responseObject
         if(test){
             //Get table data
             [self.tableView reloadData];
         }
     }
     ....
}

但是,如果我之后在单独的函数中运行 [self.tableView reloadData],它就可以正常工作。 为什么会发生这种情况,而不是教程中的情况?

【问题讨论】:

    标签: ios objective-c uitableview afnetworking reloaddata


    【解决方案1】:

    始终在主队列上重新加载:

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });
    

    【讨论】:

    • 我觉得很奇怪,我需要这个来进行 reloadData,但是在另一个 AFHTTPSessionManager 实例中,我有 viewControllers 在成功块中执行 segues,这不是必需的
    【解决方案2】:

    在主队列中写入[self.tableView reloadData];

    dispatch_sync(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });
    

    【讨论】:

    • 不要重复答案。
    • 其实这个是第一位的。所以我给它打勾
    • 我的不是第一个,但没关系
    • 别担心,最重要的是你的问题解决了
    • 这不是重复的答案。一个调用dispatch_ASYNC,另一个调用dispatch_SYNC,非常不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多