Простая строка сбора 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);
}
Другие вопросы по тегам