メソッドを使おうとするとpopToRootViewControllerAnimated
、画面が真っ暗になります。デバイスを横向きに回転させるとビューが正しく表示されるため、実際に期待したビューに戻ると思います。
これが私のアプリケーションのコンテキストです:
ビューコントローラAはナビゲーションコントローラにネストされています。ボタンをクリックすると、viewcontroller Bへのセグエがトリガーされます。viewcontrollerBのviewDidLoadメソッドでは、サーバーデータベース上のデータを収集するために接続ヘルパーが作成されます。作成中、ヘルパーはデバイスがインターネットに接続されているかどうかを確認しています。そうでない場合は、「popToRootViewControllerAnimated」が呼び出されてビューコントローラAに戻ります。
ヘルパーのコードは次のとおりです。
+(AFHTTPClient*) getClient {
if (!client) {
[self createClient];
}
if (client.networkReachabilityStatus <AFNetworkReachabilityStatusReachableViaWWAN) {
[currentController.navigationController popToRootViewControllerAnimated:YES];
//[[[UIAlertView alloc] initWithTitle:@"Connection Problem" message:@"You don't seem to be connected to internet. Please enable WI-Fi or 3G then try again." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] show];
client = nil;
}
return client;
}
+(void) createClient{
NSURL* baseUrl = [NSURL URLWithString:[[@"http://" stringByAppendingString:[ApplicationTask GetApiUrl]] stringByAppendingString:@"/"]];
client = [AFHTTPClient clientWithBaseURL:baseUrl];
client.parameterEncoding = AFJSONParameterEncoding;
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];
[client setDefaultHeader:@"Accept" value:@"application/json"];
[client setDefaultHeader:@"Content-Type" value:@"application/json"];
}
「popToRootViewControllerAnimated」メソッドが呼び出されると、コントローラーからのビューが表示されます。スライドして黒い画面が表示されます。
先に述べたように、ビューコントローラAに戻ったように感じます(デバイスを縦向きから横向きに回転させるとビューが表示されます)が、ビューは画面のフレームの外側にあるように見えます。
私がすべてを明確にしたことを願っています。
ありがとう