我正在展示一个带有自定义视图和三个按钮的 NSAlert。自定义视图有两个文本字段,它允许用户登录。
在 Mac App Store 中,出现了一个类似设计的 NSAlert。当用户单击登录按钮时,NSAlert 不会关闭(直到验证凭据)。苹果如何保持警报?
我正在展示一个带有自定义视图和三个按钮的 NSAlert。自定义视图有两个文本字段,它允许用户登录。
在 Mac App Store 中,出现了一个类似设计的 NSAlert。当用户单击登录按钮时,NSAlert 不会关闭(直到验证凭据)。苹果如何保持警报?
得到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 中就是这样做的)。在这种情况下,您可以对按钮行为进行细粒度控制。
斯威夫特 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
}
}