当前位置: 首页 > 面试题库 >

使用Swift创建NSAlert

高自怡
2023-03-14
问题内容

我有在Objective-C中创建和NSAlert的代码,但是现在我想在Swift中创建它。

该警报是为了确认用户要删除文档。

我希望“删除”按钮可以运行删除功能,而“取消”按钮只是为了消除警报。

如何在Swift中编写此代码?

NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert addButtonWithTitle:@"Delete"];
[alert addButtonWithTitle:@"Cancel"];
[alert setMessageText:@"Delete the document?"];
[alert setInformativeText:@"Are you sure you would like to delete the document?"];
[alert setAlertStyle:NSWarningAlertStyle];
[alert beginSheetModalForWindow:[self window] modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:nil];

问题答案:

beginSheetModalForWindow:modalDelegate 在OS X 10.10 Yosemite中已弃用。

迅捷2

func dialogOKCancel(question: String, text: String) -> Bool {
    let alert: NSAlert = NSAlert()
    alert.messageText = question
    alert.informativeText = text
    alert.alertStyle = NSAlertStyle.WarningAlertStyle
    alert.addButtonWithTitle("OK")
    alert.addButtonWithTitle("Cancel")
    let res = alert.runModal()
    if res == NSAlertFirstButtonReturn {
        return true
    }
    return false
}

let answer = dialogOKCancel("Ok?", text: "Choose your answer.")

返回truefalse根据用户的选择。

NSAlertFirstButtonReturn 表示添加到对话框的第一个按钮,此处为“确定”。

迅捷3

func dialogOKCancel(question: String, text: String) -> Bool {
    let alert = NSAlert()
    alert.messageText = question
    alert.informativeText = text
    alert.alertStyle = NSAlertStyle.warning
    alert.addButton(withTitle: "OK")
    alert.addButton(withTitle: "Cancel")
    return alert.runModal() == NSAlertFirstButtonReturn
}

let answer = dialogOKCancel(question: "Ok?", text: "Choose your answer.")

斯威夫特4

现在,我们将枚举用于警报的样式 按钮选择。

func dialogOKCancel(question: String, text: String) -> Bool {
    let alert = NSAlert()
    alert.messageText = question
    alert.informativeText = text
    alert.alertStyle = .warning
    alert.addButton(withTitle: "OK")
    alert.addButton(withTitle: "Cancel")
    return alert.runModal() == .alertFirstButtonReturn
}

let answer = dialogOKCancel(question: "Ok?", text: "Choose your answer.")


 类似资料:
  • 问题内容: 在ObjectiveC中,我会这样做 但是我在Swift中尝试了所有这样的选择,但都没有成功 它显示一个错误: 使用未解析的标识符“ AlwaysOriginal” 我怎么做? 问题答案: 那将是正确的语法: (对于 Swift 3.x 或 Swift 4 ) (对于 Swift 2.x ) 但您也可以使用此“快捷方式”:

  • 问题内容: 我正在尝试创建带有分页的UICollectionView,并且每个项目的最大宽度为250点,我已经设法创建了它,但是我遇到了两个问题:第一个项目开始时不正确,但是开始时有更多空间当我尝试滑动时,总会有一些东西无法让我平稳滑动。 看起来是这样的: 影片连结 这是我的代码: CenterCellCollectionFlowLayout.swift MainViewController.sw

  • 问题内容: 在iOS9之前,我们已经创建了一个目录,如下所示 但是在iOS9中,他们删除了String.stringByAppendingPathComponent。自动转换工具将我们对String的使用替换为NSURL。createDirectoryAtPath()需要一个字符串,因此我需要将NSURL转换为字符串。我们像这样使用absolutePath :(针对iOS9的更新) 但是我收到以下

  • 问题内容: 我正在制作绘图应用程序,我想通过枚举引用我的颜色。例如,每次我想要红色时,使用它会更干净,更方便,而不用键入值。但是,Swift的原始值枚举似乎并不接受UIColor作为类型。有没有办法用枚举或类似方法做到这一点? 问题答案: 我这样做(基本上使用结构作为名称空间): 您可以像这样使用它: 因此,您可以在自定义主题中使用红色。

  • 问题内容: 我是新手,并不熟悉Objective-C。有人可以帮我将其转换为Swift吗?我得到这个代码雷Wenderlich最好的iOS做法-http://www.raywenderlich.com/31166/25-ios-app-performance-tips- tricks 您会将代码放在哪里?它将放入充满全局变量的类文件中吗? 问题答案: 如果您确实要寻找问题中方法的直接模拟,则可以执

  • Swift 5.x Set 定义、创建 1. 创建Set 1.1 使用初始化器语法来创建一个确定类型的空Set let letters = Set<Character>() 1.2 使用数组字面量创建Set var letters: Set<String> = ["Math", "English", "History"] 注: 如果不指定类型为Set, 默认初始化的是数组 2. Set 类型的