當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Swift Never alert(_:isPresented:presenting:actions:message:)用法及代碼示例


用法一

實例方法

alert(_:isPresented:presenting:actions:message:)

使用給定數據顯示帶有消息的警報,以生成警報的內容和字符串變量作為標題。

聲明

func alert<S, A, M, T>(
    _ title: S,
    isPresented: Binding<Bool>,
    presenting data: T?,
    actions: (T) -> A,
    message: (T) -> M
) -> some View where S : StringProtocol, A : View, M : View

參數

title

用作警報標題的文本字符串。

isPresented

與確定是否顯示警報的布爾值的綁定。當用戶按下或點擊警報的其中一項操作時,係統將此值設置為false 並關閉。

data

警報的可選事實來源。係統將內容傳遞給修飾符的閉包。您使用此數據來填充您創建的係統向用戶顯示的警報的字段。

actions

給定當前可用數據的 ViewBuilder 返回警報的操作。

message

給定當前可用數據的 ViewBuilder 返回警報消息。

詳述

要顯示警報,isPresented 必須是 true 並且 data 不能是 nil 。演示發生後數據不應更改。您在演示發生後所做的任何更改都將被忽略。

當您需要使用數據源中的內容填充警報的字段時,請使用此方法。下麵的示例顯示了一個自定義數據源 SaveDetails ,它提供數據來填充警報:


struct SaveDetails: Identifiable {
    let name: String
    let error: String
}
struct SaveView: View {
    var title: String
    @State var didError = false
    @State var details: SaveDetails?
    var body: some View {
        Button("Save File") {
            details = model.save(didError: $didError)
        }
        .alert(
            title, isPresented: $didError, presenting: details
        ) { detail in
            Button(role: .destructive) {
                // Handle delete action.
            } label: {
                Text("""
                Delete \(detail.name)
                """)
            }
            Button("Retry") {
                // handle retry action.
            }
        } message: { detail in
            Text(detail.error)
        }
    }
}

警報中的所有操作都會在操作運行後解除警報。默認按鈕顯示得更加突出。您可以通過為其分配KeyboardShortcut/defaultAction 鍵盤快捷鍵來影響默認按鈕。

係統可以根據它們的作用和突出度對按鈕重新排序。

如果不存在任何操作,係統將包含標準的“OK” 操作。沒有提供默認的取消操作。如果要顯示取消操作,請使用角色為 ButtonRole/cancel 的按鈕。

在 iOS、tvOS 和 watchOS 上,警報僅支持標簽為 Text 的控件。傳遞任何其他類型的視圖會導致內容被省略。

消息僅支持未設置樣式的文本。

可用版本

iOS 15.0+, iPadOS 15.0+, macOS 12.0+, Mac Catalyst 15.0+, tvOS 15.0+, watchOS 8.0+

用法二

實例方法

alert(_:isPresented:presenting:actions:message:)

使用給定的數據顯示帶有消息的警報,以生成警報的內容和標題的文本視圖。

聲明

func alert<A, M, T>(
    _ title: Text,
    isPresented: Binding<Bool>,
    presenting data: T?,
    actions: (T) -> A,
    message: (T) -> M
) -> some View where A : View, M : View

參數

title

警報的標題。

isPresented

與確定是否顯示警報的布爾值的綁定。當用戶按下或點擊警報的其中一項操作時,係統將此值設置為false 並關閉。

data

警報的可選事實來源。係統將內容傳遞給修飾符的閉包。您使用此數據來填充您創建的係統向用戶顯示的警報的字段。

actions

給定當前可用數據的 ViewBuilder 返回警報的操作。

message

給定當前可用數據的 ViewBuilder 返回警報消息。

詳述

要顯示警報,isPresented 必須是 true 並且 data 不能是 nil 。演示發生後數據不應更改。您在演示發生後所做的任何更改都將被忽略。

當您需要使用數據源中的內容填充警報的字段時,請使用此方法。下麵的示例顯示了一個自定義數據源 SaveDetails ,它提供數據來填充警報:


struct SaveDetails: Identifiable {
    let name: String
    let error: String
}
struct SaveView: View {
    @State var didError = false
    @State var details: SaveDetails?
    var body: some View {
        Button("Save File") {
            details = model.save(didError: $didError)
        }
        .alert(
            Text("Saving Failed."), isPresented: $didError,
            presenting: details
        ) { detail in
            Button(role: .destructive) {
                // Handle delete action.
            } label: {
                Text("""
                Delete \(detail.name)
                """)
            }
            Button("Retry") {
                // handle retry action.
            }
        } message: { detail in
            Text(detail.error)
        }
    }
}

警報中的所有操作都會在操作運行後解除警報。默認按鈕顯示得更加突出。您可以通過為其分配KeyboardShortcut/defaultAction 鍵盤快捷鍵來影響默認按鈕。

係統可以根據它們的作用和突出度對按鈕重新排序。

如果不存在任何操作,係統將包含標準的“OK” 操作。沒有提供默認的取消操作。如果要顯示取消操作,請使用角色為 ButtonRole/cancel 的按鈕。

在 iOS、tvOS 和 watchOS 上,警報僅支持標簽為 Text 的控件。傳遞任何其他類型的視圖會導致內容被省略。

消息僅支持未設置樣式的文本。

可用版本

iOS 15.0+, iPadOS 15.0+, macOS 12.0+, Mac Catalyst 15.0+, tvOS 15.0+, watchOS 8.0+

用法三

實例方法

alert(_:isPresented:presenting:actions:message:)

使用給定的數據顯示帶有消息的警報,以生成警報的內容和標題的本地化字符串鍵。

聲明

func alert<A, M, T>(
    _ titleKey: LocalizedStringKey,
    isPresented: Binding<Bool>,
    presenting data: T?,
    actions: (T) -> A,
    message: (T) -> M
) -> some View where A : View, M : View

參數

titleKey

說明警報標題的本地化字符串的鍵。

isPresented

與確定是否顯示警報的布爾值的綁定。當用戶按下或點擊警報的其中一項操作時,係統將此值設置為false 並關閉。

data

警報的可選事實來源。係統將內容傳遞給修飾符的閉包。您使用此數據來填充您創建的係統向用戶顯示的警報的字段。

actions

給定當前可用數據的 ViewBuilder 返回警報的操作。

message

給定當前可用數據的 ViewBuilder 返回警報消息。

詳述

要顯示警報,isPresented 必須是 true 並且 data 不能是 nil 。演示發生後數據不應更改。您在演示發生後所做的任何更改都將被忽略。

當您需要使用數據源中的內容填充警報的字段時,請使用此方法。下麵的示例顯示了一個自定義數據源 SaveDetails ,它提供數據來填充警報:


struct SaveDetails: Identifiable {
    let name: String
    let error: String
}
struct SaveView: View {
    @State var didError = false
    @State var details: SaveDetails?
    var body: some View {
        Button("Save File") {
            details = model.save(didError: $didError)
        }
        .alert(
            "Saving Failed.", isPresented: $didError,
            presenting: details
        ) { detail in
            Button(role: .destructive) {
                // Handle delete action.
            } label: {
                Text("""
                Delete \(detail.name)
                """)
            }
            Button("Retry") {
                // handle retry action.
            }
        } message: { detail in
            Text(detail.error)
        }
    }
}

此修飾符代表您為標題創建 Text 視圖,並將本地化鍵視為類似於 Text/init(_:tableName:bundle:comment:) 。有關本地化字符串的更多信息,請參閱Text

警報中的所有操作都會在操作運行後解除警報。默認按鈕顯示得更加突出。您可以通過為其分配KeyboardShortcut/defaultAction 鍵盤快捷鍵來影響默認按鈕。

係統可以根據它們的作用和突出度對按鈕重新排序。

如果不存在任何操作,係統將包含標準的“OK” 操作。沒有提供默認的取消操作。如果要顯示取消操作,請使用角色為 ButtonRole/cancel 的按鈕。

在 iOS、tvOS 和 watchOS 上,警報僅支持標簽為 Text 的控件。傳遞任何其他類型的視圖會導致內容被省略。

消息僅支持未設置樣式的文本。

可用版本

iOS 15.0+, iPadOS 15.0+, macOS 12.0+, Mac Catalyst 15.0+, tvOS 15.0+, watchOS 8.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Never alert(_:isPresented:presenting:actions:message:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。