如何在AFNetworking 2故障阻止中弹出UINavigationController
?我的代码如下:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
NSDictionary *params = @{@"request": @"get_sth"};
[manager POST:API_URL parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
// success block here, omitted
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// how can I pop UINavigationController here?
// method 1
[self.navigationController popViewControllerAnimated:YES];
// method 2
[self.navigationController performperformSelectorOnMainThread:@selector(popViewControllerAnimated:) withObject:[NSNumber numberWithBool:YES] waitUntilDone:NO];
}];
方法1和方法2都没有响应(没有错误,没有警告,没有崩溃,没有延迟)。我认为方法1不起作用,因为故障块在后台线程中运行。所以我使用方法2.与方法1相同的响应。
我的目标很简单:当网络操作失败时,弹回上一页。
在上面的案例中我错过了什么?
P.S。 self.navigationController
不为空
答案 0 :(得分:0)
我尝试了你的代码并能够毫无问题地弹出viewcontroller。除非您在AFHTTPRequestOperation
上明确设置队列,否则在主队列中调用AFHTTPRequestOperation
块。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
NSDictionary *params = @{@“key”: @“value”};
[manager POST:URL parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
// success code
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// failure code
[self.navigationController popViewControllerAnimated:YES];
}];
另外,请确保在导航过渡完成之前没有按下并弹出控制器,这会产生未指定的过渡状态。