4

我正在展示一个带有自定义视图和三个按钮的 NSAlert。自定义视图有两个文本字段,它允许用户登录。

在 Mac App Store 中,出现了一个类似设计的 NSAlert。当用户单击登录按钮时,NSAlert 不会关闭(直到验证凭据)。苹果如何保持警报?

4

2 回答 2

10

得到NSButton你想要表现不同的东西。改变它的目标和行动。(要调用原始目标/动作,请在更改之前保留它们。)

NSAlert *alert = ...;
NSButton *button = [[alert buttons] objectAtIndex:...];

id oldTarget = [button target];
SEL oldAction = [button action];
[button setTarget:self];
[button setAction:@selector(verifyCredentials:)];

或者,您可能希望将警报构建为自定义窗口控制器和 XIB(Apple 在 App Store 中就是这样做的)。在这种情况下,您可以对按钮行为进行细粒度控制。

于 2012-08-02T23:22:50.163 回答
-1

斯威夫特 4 风格

let alert = NSAlert()
alert.alertStyle = .informational
alert.messageText = "Y/N?"
alert.addButton(withTitle: "Y")
alert.addButton(withTitle: "N")

guard let window = view.window else { return } // for NSViewController

alert.beginSheetModal(for: window) { res in
    if res == .alertFirstButtonReturn {
        // "Y" action
    } else {
        // "N" action        
    }
}
于 2018-04-23T21:56:57.457 回答