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];
}