Простая строка сбора iOS для UIAlertView
Я пытаюсь отправить данные в базу данных, но проблема в том, что я не могу получить текст, который был введен в UIAlertView от пользователя. Я перепробовал много решений, таких как просмотр UITextField, но безуспешно. Вот моя текущая, простая конфигурация. Дайте мне знать, если вам нужна дополнительная информация.
- (void)viewDidLoad
{
[super viewDidLoad];
//load site in webview
NSURLRequest *siteRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://google.com/"]
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[webview loadRequest:siteRequest];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Welcome" message:@"Please enter your email address." delegate:self cancelButtonTitle:@"Submit" otherButtonTitles:@"Skip", nil];
alertView.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField *emailInput = [alertView textFieldAtIndex:0];
[alertView show];
emails=emailInput.text;
// NSLog(emails);
phone=@"8675309";
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
4 ответа
Вам нужно получить письмо на UIAlertViewDelegate
метод:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
UITextField *emailInput = [alertView textFieldAtIndex:0];
NSLog(@"%@",emailInput.text);
}
Вы пытаетесь получить значение до того, как пользователь введет его, и даже до того, как пользователю будет показано представление оповещения.
UITextField *emailInput = [alertView textFieldAtIndex:0];
Используйте метод делегата и затем попытайтесь получить значение как это.
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
UITextField *emailInput = [alertView textFieldAtIndex:0];
}
Вы также пропустили, чтобы включить эту строку
alertView.delegate = self;
и не забудьте подтвердить протокол UIAlertViewDelegate
в.h файле, как это
@interface yourViewController : UIViewController<UIAlertViewDelegate>
В противном случае он не будет вызывать метод делегата.
Надеюсь, что это поможет вам.
Пожалуйста, используйте UIAlertviewDelegate и его метод делегата
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
UITextField *emailInput = [alertView textFieldAtIndex:0];
NSLog(@"Email Text is %@",emailInput.text);
}
Вы выделили память для UIAlertview. Таким образом, в текстовом поле у вас нет текста изначально. Таким образом, вы не получаете никакого текста. Используйте метод делегата UIAlertVIew. В этом доступе текстовое поле текста.
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
NSLog(@"textfield text is %@",[alertView textFieldAtIndex:0].text);
}