当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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(_:_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。