【问题标题】:How to bring up a separate view when a search bar is clicked? [SwfitUI] [closed]单击搜索栏时如何显示单独的视图? [SwiftUI] [关闭]
【发布时间】:2021-11-02 19:55:33
【问题描述】:

我正在尝试实现一个显示单独视图的搜索栏(参见 Twitter 示例)。

这是如何实现的?我最初的想法是以某种方式使用NavigationView 环绕搜索栏视图,当用户点击搜索栏时,调用NavigationLink 会调出单独的视图。

但这是正确的方法吗? Twitter 示例似乎没有显示 NavigationView 元素,如“

【问题讨论】:

  • Twitter 可能正在使用 UIKit。在 SwiftUI 中,您可以键入 FocusState 的更改。
  • 谢谢你,@Yrb。我以为FocusState 是为了将焦点转移到不同的文本字段?您将如何使用它来控制视图?我在 Apple 的文档中找不到任何有用的信息。
  • FocusState 是一个状态,它定义了某物是否被聚焦,但其他人可以绑定到它并根据动作改变它。在这种情况下,操作将是用户点击文本字段。

标签: swift swiftui


【解决方案1】:

FocusState 是一个状态,但它设置了一个变量。因此,您可以像这样使用.onChange(of:perform:) 关闭该更改。

struct ContentView: View {
    @FocusState var isFocused: Bool
    ...
    var body: some View {
        TextField("TextField", text: $text)
                .focused($isFocused)
                .onChange(of: isFocused, perform: { newValue in
                    print("focus")
                })
        ...
    }
}

如果你在其他TextFields上使用它不会起作用,但是会触发它。

【讨论】:

    猜你喜欢
    • 2018-12-13
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 2017-10-25
    • 2022-12-08
    相关资源
    最近更新 更多