标签: swiftui-navigationstack

NavigationStack 可搜索 .focused

当用户单击搜索框以满足条件(显示另一个视图)时,我需要进行配置。一旦他单击“取消”以显示原始视图(已经可以通过 .onChange(of: searchText) { value in if (!value.isEmpty) {...) 进行测试

NavigationStack {
            ...
if showView == true {}
            ...
            
        }
        
        .searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always), prompt: LocalizedStringKey("Look for something"))
        .focused($focusState)
        .onChange(of: focusState, perform: { 
        showView = true
            })
Run Code Online (Sandbox Code Playgroud)

当用户开始搜索时,我需要显示不同的视图并隐藏原始视图,因为我在新视图上有搜索设置。一旦他点击“搜索”按钮,搜索就会开始。

searchable swiftui swiftui-navigationstack

2
推荐指数
1
解决办法
1242
查看次数

SwiftUI NavigationStack NavigationLink 相同值,多个目的地

我有一个这样的模型...

struct User: Codable {
    let followersCount: Int
    let followingCount: Int
}
Run Code Online (Sandbox Code Playgroud)

使用 NavigationStack 我希望能够使用基于 Value 的 NavigationLink

 NavigationLink(value: user.followersCount) {
    Text("Followers")
}

NavigationLink(value: user.followingCount) {
    Text("Following")
}
.navigationDestination(for: Int.self) { _ in
    FollowersView()
}

.navigationDestination(for: Int.self) { _ in
    FollowingView()
}
Run Code Online (Sandbox Code Playgroud)

因为这两个值都是 Int。有没有办法区分两者?

swiftui swiftui-navigationlink ios16 swiftui-navigationstack

2
推荐指数
1
解决办法
861
查看次数

SwiftUI 导航Stack 导航

我正在尝试使用 NavigationStack 为我的 SwiftUI 项目进行导航。我总共有 4 个屏幕。我的应用程序的主页有登录和注册按钮。如果用户成功登录,应用程序会将用户带到主页,用户可以在其中执行与应用程序相关的其他操作。注册按钮将他们导航到注册页面。如果他们成功注册,他们将导航到应用程序的主页,在那里他们可以继续使用应用程序。

\n

在主屏幕上,我有一个带有按钮的工具栏,可将用户导航到另一个页面,在其中他们可以看到从远程数据库检索到的项目列表。

\n

我正在使用 NavigationStack 和 NavigationPath 进行导航。我正在设置附加到导航路径的字符串值。

\n

但是,当我使用字符串值将用户从主屏幕导航到列表屏幕时,出现以下错误:

\n

\xe2\x80\x9cswift.string\xe2\x80\x9d 的导航目标已在堆栈的较早位置声明。仅使用最接近堆栈根视图声明的目标。

\n

我尝试了几个小时来解决这个问题,但我无法做到。有人可以让我知道我哪里出了问题吗?我的代码如下:

\n
struct MainScreen: View {\n  @State private var path: NavigationPath = NavigationPath()\n    \n  var body: some View {\n    /*\n     Other code here\n    */\n    \n    Button {              \n      print("Show Sign Up View")\n      path.append("ShowSignUp")              \n    } label: {\n      HStack {\n        // Image(systemName: "person.fill.badge.plus")\n        Text("Sign Up")                    \n      }            \n    }\n    .navigationDestination(for: String.self) { value in                \n      if(value == "ShowAddParking") {\n        AddParkingView(path: …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui swiftui-navigationstack swiftui-navigationpath

2
推荐指数
1
解决办法
2608
查看次数

SwiftUI:使用 NavigationStack 显示导航栏

我想显示一个具有橙色背景颜色和白色标题的导航栏。

使用此设置一切正常:

    let navigationBarAppearance = UINavigationBarAppearance()
    navigationBarAppearance.titleTextAttributes = [.foregroundColor: UIColor(Color.white)]
    navigationBarAppearance.backgroundColor = .orange
    
    UINavigationBar.appearance().standardAppearance = navigationBarAppearance
    UINavigationBar.appearance().compactAppearance = navigationBarAppearance
    UINavigationBar.appearance().scrollEdgeAppearance = navigationBarAppearance
Run Code Online (Sandbox Code Playgroud)

我的屏幕的源代码如下所示:

struct ScreenView: View {
    var body: some View {
        NavigationView {
            List {
                NavigationLink("Row", destination: Text("Tapped on row"))
            }
        }
        .navigationTitle("List")
        .navigationBarTitleDisplayMode(.inline)
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

如果我用 NavigationStack 替换 NavigationView,导航栏就会消失。

有什么我想念的吗?

ios swift swiftui swiftui-navigationview swiftui-navigationstack

1
推荐指数
1
解决办法
2641
查看次数