0

UIViewControllerデリゲートで2 つを示すコードがあります。

RootViewController.m

request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"***some https url here ***"]];
// custom implementation of NSURLConnectionDelegate
dataman = [[DataManager alloc] initWithParentcontroller:self]; 
mainConn = [[NSURLConnection alloc] initWithRequest:request delegate:dataman]; 

AuthenticationViewController.h 内

@protocol ShowAuthenticationWindowDelegate <NSObject>
@required
- (void) onFinishedEnteringCredentials:(NSURLCredential*)credentials;
- (void) onCancelAuthentication;
@end

AuthenticationViewController.m で

- (IBAction) onClickLogin:(id)sender;
{
    ....
    // authDelegate => id <ShowAuthenticationWindowDelegate>
    [authDelegate onFinishedEnteringCredentials:credentials];
    [self dismissModalViewControllerAnimated:YES];
    ....
}

DataManger.h (DataManager クラス) で と を実装しNSURLConnectionDelegateますShowAuthenticationWindowDelegate

Datamanager.m ではdidReceiveAuthenticationChallengeデリゲート関数で、AuthentiationViewControllerユーザー名/パスワードを収集するモーダル ダイアログとして表示します。

-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    AuthenticationViewController *authview = [[AuthenticationViewController alloc] initWithNibName:@"AuthenticationViewController" bundle:[NSBundle mainBundle]];
    authview.modalPresentationStyle = UIModalPresentationFullScreen;
    authview.modalTransitionStyle   = UIModalTransitionStyleFlipHorizontal;
    authview.credentialsDelegate = self;
    [rootController presentModalViewController:authview animated:YES];
} 

ここでUIViewControllerは、ビュー内のアクティビティ インジケーターである を示します。AuthenticationViewController呼び出されたログインボタンイベントハンドラーの1つで前のダイアログを閉じた後、モーダルで表示していますdismissModalViewController。チャレンジオブジェクト(以前にキャッシュされた)で資格情報を送信した後、ActivityViewControllerをモーダルに表示していますが、何をしても表示されません。動作するものを表示しようとしましたUIAlertViewが、アクティビティ ビュー コントローラーが表示されません。パラメータとオブジェクトがすべて有効であることを確認しました。デリゲートのワイヤーアップでさえ!!! すべてのコードが呼び出されますが、ダイアログは表示されません。

私は何かが欠けているかもしれません???

- (void) onFinishedEnteringCredentials:(NSURLCredential*)credentials;
{

    [[authChallenge sender] useCredential:credentials forAuthenticationChallenge:authChallenge];
    // create an activity modal dialog 
    if (activityController == nil) {
        activityController = [[ActivityViewController alloc] initWithNibName:@"ActivityViewController" bundle:[NSBundle mainBundle]];
        activityController.modalPresentationStyle = UIModalPresentationFullScreen;
        activityController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    }
    [rootController presentModalViewController:activityController animated:YES];
}
4

1 に答える 1

0

私は解決策を見つけました.2つのモーダルダイアログを連続して表示したい場合は、閉じられるコントローラーで「アニメーション」パラメーターを「NO」に設定する必要があります。「presentViewController」関数で次のコントローラーが表示されるまでにアニメーションの遷移が完了していないようです。

于 2012-05-19T23:18:07.373 に答える