单击搜索栏时如何显示单独的视图? [SwiftUI] [关闭]

Posted

技术标签:

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

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

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

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

【问题讨论】:

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

【讨论】:

以上是关于单击搜索栏时如何显示单独的视图? [SwiftUI] [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftUI 显示全栈模式?

编辑搜索栏时将 UITableView 添加到子视图

取消搜索栏时,所选行正在更改

搜索显示控制器如何隐藏导航栏?

单击搜索结果时显示空的详细信息视图

使用ios 8 UISearchController单击搜索栏时如何隐藏部分标题?