gpt4 book ai didi

ios - UIAlertView元数据

转载 作者:行者123 更新时间:2023-11-29 03:43:15 26 4
gpt4 key购买 nike

我正在编写一个警报 View ,要求输入用户名和密码,但是,我想在传入的 NSURLAuthenticationChallenge* 中使用这些凭据

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;

有没有办法调用 UIAlertview 并将挑战变量临时保存在其中,以便稍后在调用 UIAlertView 的委托(delegate)方法时使用它?使用属性或实例变量似乎不太优雅。

这是我的代码:

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

最佳答案

实例变量 (ivars) 以及扩展属性的目的是维护对象状态。

在 ivar 中跟踪挑战变量是非常合适的。 UIAlertView 类不支持关联任意数据的方法,因此使用 ivar 就可以了。

您可以利用 Objective-C 的关联对象,但在这种情况下,没有理由不使用 ivar 来维护这种状态。

关于ios - UIAlertView元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18067791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com