如何弹出 UINavigationController
在 AFNetworking 2 故障 block 中?我的代码如下:
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 不起作用,因为故障 block 在后台线程中运行。所以我使用方法 2。与方法 1 的响应相同。
我的目标很简单:当网络操作失败时,弹回上一页。
在上面的案例中我错过了什么?
p.s.
self.navigationController
不为空
最佳答案
我尝试了您的代码并且能够毫无问题地弹出 View Controller 。在 AFHTTPRequestOperation
除非您在 AFHTTPRequestOperation
上显式设置队列,否则在主队列上调用 block 。 .
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];
}];
还要确保在导航转换完成之前没有插入和弹出 Controller ,这会产生意外的转换状态。
关于ios - 在 AFNetworking 故障 block 中弹出 UINavigationController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25300042/