0

私は自分のloadingViewを構築しましたが、今は良さそうです。しかし、このloadingViewを表示および削除する適切なタイミングがわかりません。UIButton を持つ最初の RootViewController で NavigationController を使用します。UIButton を押すと新しい UIView が表示されますが、サーバーからいくつかのファイルをロードしているため、これには数秒かかります。そのため、この間、loadingView を表示したいと思います。私は prepareForSegue()-Method を使用し、そこにコードを配置して、このような読み込みビューを追加します

[self.navigationController.view addSubview:backgroundLoadingView];

そしてviewDidDisapperarにこのコード行を入れました

[backgroundLoadingView removeFromSuperview];

その効果は、UIButton を押しても (ファイルの読み込みのため) 数秒間何も起こらず、loadingView がポップアップしません (ただし、そうすべきです)、新しい ViewController が表示され、loadingView が 1 秒間ポップアップして消えます。

ですから、適切なタイミングで消えますが、適切なタイミングで表示されません。どうすればこの状況に対処できますか?

編集:
これが私のprepareForSegue-Methodです

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    
    if([segue.identifier isEqualToString:@"showPointsOnMap"])
    {
        NSLog(@"Here is prepareForsegue()");
        [self.navigationController.view addSubview:backgroundLoadingView];
        [self prepareJSONData:[self getJSONData]];
        [segue.destinationViewController setPointArray:thePointArray];
    }

}
4

1 に答える 1

0

サーバーとの通信中に読み込み中のビューを表示したい場合は、ビューコントローラーではなくウィンドウに追加する必要があります..のように

UIWindow *window = [UIApplication sharedApplication].keyWindow;

window addSubView:backgroundLoadingView];

[window bringSubviewToFront:backgroundLoadingView];
于 2013-01-17T10:46:18.610 に答える