Цель C - я бы хотел, чтобы UIAlertController не удалялся при нажатии кнопки - PullRequest
0 голосов
/ 03 мая 2018

Я хотел бы представить UIAlertController с 2 кнопками.

Одна кнопка должна закрывать предупреждение, а вторая должна выполнять действие, но оставаться предупреждением на экране. Есть ли какая-то конфигурация, которую можно выполнить, чтобы она не закрывала оповещение?

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"title"
                                                               message:@"message"
                                                        preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"Do Something"
                                          style:UIAlertActionStyleDefault
                                        handler:^(UIAlertAction *action) {
    //Pressing this button, should not remove alert from screen
                                        }]];

[alert addAction:[UIAlertAction actionWithTitle:@"Close"
                                          style:UIAlertActionStyleDefault
                                        handler:^(UIAlertAction *action) {
    //Regular functionality- pressing removes alert from screen 
                                        }]];


[alert show];

Это ( Запрет UIAlertController отклонить ) было предложено в качестве возможного ответа, но вопрос касается текстового поля. Мне нужна одна из кнопок действий, чтобы не закрывать предупреждение при нажатии.

Ответы [ 5 ]

0 голосов
/ 13 мая 2018

Как насчет этого кода:

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"title"
                                                               message:@"message"
                                                        preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *doSomethingAction = [UIAlertAction actionWithTitle:@"Do Something"
                                                     style:UIAlertActionStyleDefault
                                                   handler:nil];
doSomethingAction.enabled = NO;
[alert addAction:doSomethingAction];

[alert addAction:[UIAlertAction actionWithTitle:@"Close"
                                          style:UIAlertActionStyleDefault
                                        handler:^(UIAlertAction *action) {
                                            //Regular functionality- pressing removes alert from screen
                                        }]];
[self presentViewController:alert animated:true completion:nil];

установить NO в enabled свойство UIAlertAction. Это работает хорошо.

0 голосов
/ 12 мая 2018

Попробуйте этот код.

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"title"
                                                               message:@"message"
                                                        preferredStyle:UIAlertControllerStyleAlert];

[alert addAction:[UIAlertAction actionWithTitle:@"Do Something"
                                          style:UIAlertActionStyleDefault
                                        handler:^(UIAlertAction *action) {

                                            NSLog(@"Do Something Tapped");
                                        }]];

[alert addAction:[UIAlertAction actionWithTitle:@"Close"
                                          style:UIAlertActionStyleDefault
                                        handler:^(UIAlertAction *action) {
                                            NSLog(@"Close Tapped");
                                        }]];


[self presentViewController:alert animated:YES completion:nil];
0 голосов
/ 09 мая 2018

Говоря с точки зрения пользователя, нажатие кнопки, которое не выполняет какое-либо действие, заставит меня задуматься, что-то сломалось. Если вы пытаетесь использовать это как возможность получить дополнительную информацию или некоторую информацию о намерении нажать кнопку, я думаю, что решение, которое соответствует ожиданиям пользователя (хотя, возможно, немного раздражает?), Состоит в том, чтобы просто представить второй диалог коробка после закрытия первой. По сути, это способ «одного диалогового окна на вопрос».

В противном случае я соглашаюсь с другими предложениями и скажу, что здесь вам нужно пользовательское представление, а не стандартное решение UIKit.

0 голосов
/ 09 мая 2018

Вы не можете сделать это со значением по умолчанию UIAlertViewController, если вы хотите сделать это, вам нужно создать собственный контроллер представления, который выглядит как UIAlertController.
Вы можете использовать этот пользовательский контроллер вида.

https://github.com/nealyoung/NYAlertViewController

0 голосов
/ 06 мая 2018

Вы не можете сделать это.

Единственное решение - создать собственный контроллер представления, который будет выглядеть как собственный UIAlertController.

...