我正在展示一个带有自定义视图和三个按钮的NSAlert。自定义视图有两个文本字段,允许用户登录。
在Mac App Store中,会出现具有类似设计的NSAlert。当用户单击登录按钮时,NSAlert不会被忽略(直到验证凭据)。 Apple如何保持警惕?
答案 0 :(得分:9)
获取您希望表现不同的NSButton
。改变目标和行动。 (要调用原始目标/操作,请在更改之前保留它们。)
NSAlert *alert = ...;
NSButton *button = [[alert buttons] objectAtIndex:...];
id oldTarget = [button target];
SEL oldAction = [button action];
[button setTarget:self];
[button setAction:@selector(verifyCredentials:)];
或者,您可能希望将警报构建为自定义窗口控制器和XIB(在App Store的情况下Apple就是这样做的。)在这种情况下,您可以对按钮行为进行细粒度控制。 / p>
答案 1 :(得分:-1)
Swift 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
}
}