从UIAlertview获取用户名和密码以用于willSendRequestForAuthenticationChallenge xcode
问题描述:
我想从uialertview获取用户名和密码并传递给willSendRequestForAuthenticationChallenge。这些是我的代码。从UIAlertview获取用户名和密码以用于willSendRequestForAuthenticationChallenge xcode
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Login"
message:nil
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK",@"Auto", nil];
alertView.transform=CGAffineTransformMakeScale(1.0, 0.75);
alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
[alertView show];
if ([challenge previousFailureCount] == 0)
{
NSLog(@"Inside challenge previousFailureCount==0");
NSURLCredential *credentail = [NSURLCredential
credentialWithUser:Username
password:Password
persistence:NSURLCredentialPersistenceNone];
[[challenge sender] useCredential:credentail forAuthenticationChallenge:challenge];
}
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
//Index1 = OK
//Index2 = Auto
//Index0 = Cancel
NSLog(@"Alert View dismissed with button at index %d",buttonIndex);
if(buttonIndex==1)
{
NSURLAuthenticationChallenge *challenge;
Username= [alertView textFieldAtIndex:0].text;
Password= [alertView textFieldAtIndex:1].text;
}
}
的问题是我无法从UIAlertView中调用用户名和密码pass.If我写上面的代码,用户写入的用户名和密码之前,它会做的挑战。我们必须等到用户按OK。而且,如果我在didDismissWithButtonIndex中挑战,我也会遇到错误。 我想知道如何做。请帮助我。
答
while click on alertView button it dismiss alertView .Better take on more alertView and pass your value there。
如果这不是塞纳里奥,我会建议请详细说明你真正想要的。
答
哦....我想我找到了一个办法。我可以回想起willSendRequestForAuthenticationChallenge.So,首先,UIalertview将显示。我们将保存用户名和密码。然后,我们回想一下willSendRequestForAuthenticationChallenge并传递用户名和密码。
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
//Index1 = OK
//Index2 = Auto
//Index0 = Cancel
checkUserPw=TRUE;
checkTochangeUIalert=FALSE;
NSLog(@"Alert View dismissed with button at index %d",buttonIndex);
if(buttonIndex==1)
{
checkManualAuthentication=TRUE;
NSLog(@"User clicks OK");
self.UserName = [alertView textFieldAtIndex:0].text;
self.Password = [alertView textFieldAtIndex:1].text;
connection_for_auto = [[NSURLConnection alloc] initWithRequest: [NSURLRequest requestWithURL:toRedirectURL] delegate:self];
[connection_for_auto start];
}
}
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
if(!checkUserPw){
//so that alert will display only once.
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Login"
message:nil
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK",@"Auto", nil];
alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
[alertView show];
}
else
{
NSURLCredential *credentail =nil;
credentail = [NSURLCredential
credentialWithUser:self.UserName
password:self.Password
persistence:NSURLCredentialPersistenceNone];
[[challenge sender] useCredential:credentail forAuthenticationChallenge:challenge];
}
}
感谢兄弟。我找到了一个办法。 – 2013-03-13 06:45:33