0

メソッドを使おうとすると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に戻ったように感じます(デバイスを縦向きから横向きに回転させるとビューが表示されます)が、ビューは画面のフレームの外側にあるように見えます。

私がすべてを明確にしたことを願っています。

ありがとう

4

1 に答える 1

1

コメントで述べたように、viewDidAppearメソッドでルートコントローラーにポップすることでうまくいくようです。

于 2012-12-18T16:39:04.023 に答える