我想提供一个带有2个按钮的UIAlertController。
一个按钮应该关闭警报,第二个按钮应该执行操作但在屏幕上保持警报。是否有一些可以执行的配置,它不会关闭警报?
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];
这个(Prevent UIAlertController to dismiss)被建议作为可能的答案,但问题涉及文本字段。我需要其中一个操作按钮,以便在按下时不关闭警报。
答案 0 :(得分:6)
你不能这样做。
只有一种解决方案是创建一个看起来像本机UIAlertController
的自定义视图控制器。
答案 1 :(得分:3)
您无法使用默认UIAlertViewController
执行此操作,如果您要执行此操作,则需要创建类似UIAlertController
的自定义视图控制器。
您可以使用此自定义视图控制器。
答案 2 :(得分:1)
从用户的角度来看,没有按行动的按钮按下会让我想知道是否有什么东西被打破了。如果您试图将此作为获取更多信息的机会,或者按钮按下意图的一些细节,我认为一个符合用户期望的解决方案(虽然可能有点烦人?)就是简单地呈现第二个对话框关闭第一个后的框。基本上,一个“按对话框一对话”的方式处理它。
否则,我会同意其他建议,并说你需要一个自定义视图,而不是UIKit股票解决方案。
答案 3 :(得分:1)
试试这段代码。
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];
答案 4 :(得分:0)
这段代码怎么样:
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
设置为UIAlertAction的enabled
属性。它运作良好。