私は天気アプリケーションを構築しています。状態では、セグエを実行してView Controllerを変更する必要があります。MKNetworkKit を使用しています。API が値を返さない場合は、セグエをトリガーします。この画面では、アニメーションも作成して表示します。これが私のコードです:
- (void)proccessCompletedWithSuccess:(BOOL)success withResponse: (NSArray *)response;
{
if(success){
//do something
}else{
[self performSegueWithIdentifier:@"NotFound" sender:self];
}
}
GetWeather.m ファイル:
#import "GetWeather.h"
@implementation GetWeather
-(MKNetworkOperation*)
urlForApi:(NSString*) urlForApi
path:(NSString*) path
params:(NSMutableDictionary*)params
completionHandler:(ApiResponseBlockForWeather) completionBlock
errorHandler:(MKNKErrorBlock) errorBlock {
MKNetworkOperation *op = [self operationWithPath:path
params:params
httpMethod:@"GET"];
[op addCompletionHandler:^(MKNetworkOperation *completedOperation)
{
NSArray* returningArray = [completedOperation responseJSON];
NSString* description =[[[[returningArray valueForKey:@"query"]
valueForKey:@"results"]
valueForKey:@"channel"]
valueForKey:@"description"];
if ([description isEqualToString:@"Yahoo! Weather Error"]) {
[self.delegate proccessCompletedWithSuccess:NO withResponse:nil];
}else{
[self.delegate proccessCompletedWithSuccess:YES withResponse:returningArray];
}
if([completedOperation isCachedResponse]) {
//NSLog(@"weather response from cache");
}
else {
//NSLog(@"weather response from server");
}
// NSLog(@"%@",[completedOperation url]);
completionBlock(returningArray);
}errorHandler:^(MKNetworkOperation *errorOp, NSError* error) {
errorBlock(error);
[self.delegate proccessCompletedWithSuccess:NO withResponse:nil];
}];
[self enqueueOperation:op];
return op;
}
@end
そして、私はこのエラーを受け取りました:Unbalanced calls to begin/end appearance transitions for <NotFoundViewController: 0x8888a80>.
更新: 私は遅延で performSelector を試しました。
[self performSelector:@selector(performNotFound) withObject:nil afterDelay:1.0f];
-(void)performNotFound{
[self performSegueWithIdentifier:@"NotFound" sender:self];
}
しかし、何も変わりませんでした。