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


Swift Never focusedSceneValue(_:_:)用法及代碼示例


實例方法

focusedSceneValue(_:_:)

通過注入您提供的值來修改此視圖,以供其他視圖使用,這些視圖的狀態取決於焦點場景。

聲明

func focusedSceneValue<T>(
    _ keyPath: WritableKeyPath<FocusedValues, T?>,
    _ value: T
) -> some View

返回值

此視圖的修改表示。

參數

keyPath

value 添加到現有的已發布焦點值表時關聯的關鍵路徑。

value

要發布的焦點值。

詳述

對於無論焦點位於活動場景中的何處都必須可見的值,請使用此方法而不是 View/focusedValue(_:_:)。例如,如果一個應用程序需要一個命令來將焦點移動到側邊欄中的特定文本字段,它可以使用這個修飾符發布一個按鈕操作,隻要場景處於活動狀態,無論焦點發生在哪裏,命令視圖都可以看到該操作在其中。


struct Sidebar: View {
    @FocusState var isFiltering: Bool


    var body: some View {
        VStack {
            TextField(...)
                .focused(when: $isFiltering)
                .focusedSceneValue(\.filterAction) {
                    isFiltering = true
                }
        }
    }
}


struct NavigationCommands: Commands {
    @FocusedValue(\.filterAction) var filterAction


    var body: some Commands {
        CommandMenu("Navigate") {
            Button("Filter in Sidebar") {
                filterAction?()
            }
        }
        .disabled(filterAction == nil)
    }
}


struct FilterActionKey: FocusedValuesKey {
    typealias Value = () -> Void
}


extension FocusedValues {
    var filterAction: (() -> Void)? {
        get { self[FilterActionKey.self] }
        set { self[FilterActionKey.self] = newValue }
    }
}

可用版本

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

相關用法


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