2

我有一个用于复选框的NSAlertwithsetShowsSuppressionButton:YES和两个名为OKand的按钮Cancel。每当我们单击(检查)抑制按钮时,如何使Cancel按钮变为禁用状态?

4

2 回答 2

1

您需要禁用该按钮并设置action和的target属性suppressionButton

alert = [[NSAlert alloc] init];
[alert setMessageText:@"text"];
[alert addButtonWithTitle:@"OK"];
[alert addButtonWithTitle:@"Cancel"];
[alert.buttons[0] setEnabled:NO];
[alert setShowsSuppressionButton:YES];
[alert.suppressionButton setTitle:@"You need to activate me first"];
[alert.suppressionButton setTarget:self];
[alert.suppressionButton setAction:@selector(selectClicked:)];
[alert runModal];

然后,在动作处理程序中,您可以enabled根据复选框的状态切换按钮的属性:

-(IBAction)selectClicked:(NSButton *)sender {
    for (NSView *view in sender.superview.subviews) {
        if ([view isKindOfClass:[NSButton class]]) {
            NSButton *button = (NSButton *)view;
            if ([button.title isEqualToString:@"OK"]) {
                button.enabled = (sender.state == NSControlStateValueOn);
            }
        }
    }
}
于 2020-05-26T08:30:31.247 回答
0

一旦抑制按钮处于活动状态,就设置一个布尔值,并在创建警报时检查它,或者使用 if else 语句检查它,创建两个不同的警报之一,一个有取消,一个没有取消。

于 2013-06-24T19:15:55.280 回答