ユーザー名とパスワードを要求するアラート ビューを作成していますが、これらの資格情報を NSURLAuthenticationChallenge* から渡されたもので使用したいと考えています。
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
UIAlertView のデリゲート メソッドが呼び出されたときに後で使用できるように、UIAlertview を呼び出してその中にチャレンジ変数を一時的に保存する方法はありますか? プロパティまたはインスタンス変数を使用するのは洗練されていないようです。
これが私のコードです:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
{
NSLog(@"got authorization challange");
if ([challenge previousFailureCount] == 0) {
UIAlertView * loginAlert = [[UIAlertView alloc] initWithTitle:@"Login" message:@"Enter your Username and Password" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Sign In", nil];
loginAlert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
[loginAlert show];
} else {
[[challenge sender] cancelAuthenticationChallenge:challenge];
[[[UIAlertView alloc] initWithTitle:@"Invalid username/PW" message:@"Please try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil] show];
}
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if([alertView.title isEqualToString:@"Login"] &&
buttonIndex == 1)
{
/*want to use the challenge variable here to log in the user over the secure connection*/
[[challenge sender] useCredential:[NSURLCredential credentialWithUser:[alertView textFieldAtIndex:0].text password:[alertView textFieldAtIndex:1].text persistence:NSURLCredentialPersistencePermanent] forAuthenticationChallenge:challenge];
}
}