当用户单击搜索框以满足条件(显示另一个视图)时,我需要进行配置。一旦他单击“取消”以显示原始视图(已经可以通过 .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)
当用户开始搜索时,我需要显示不同的视图并隐藏原始视图,因为我在新视图上有搜索设置。一旦他点击“搜索”按钮,搜索就会开始。
我有一个这样的模型...
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
我正在尝试使用 NavigationStack 为我的 SwiftUI 项目进行导航。我总共有 4 个屏幕。我的应用程序的主页有登录和注册按钮。如果用户成功登录,应用程序会将用户带到主页,用户可以在其中执行与应用程序相关的其他操作。注册按钮将他们导航到注册页面。如果他们成功注册,他们将导航到应用程序的主页,在那里他们可以继续使用应用程序。
\n在主屏幕上,我有一个带有按钮的工具栏,可将用户导航到另一个页面,在其中他们可以看到从远程数据库检索到的项目列表。
\n我正在使用 NavigationStack 和 NavigationPath 进行导航。我正在设置附加到导航路径的字符串值。
\n但是,当我使用字符串值将用户从主屏幕导航到列表屏幕时,出现以下错误:
\n\xe2\x80\x9cswift.string\xe2\x80\x9d 的导航目标已在堆栈的较早位置声明。仅使用最接近堆栈根视图声明的目标。
\n我尝试了几个小时来解决这个问题,但我无法做到。有人可以让我知道我哪里出了问题吗?我的代码如下:
\nstruct 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
我想显示一个具有橙色背景颜色和白色标题的导航栏。
使用此设置一切正常:
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