swift - 如何导航到新视图但删除它与 NavigationView 的连接?
问题描述
我有一个嵌入到 NavigationView 中的登录流程,但是一旦成功,新视图就是 TabView。但是,我不需要此 TabView 成为导航堆栈的一部分。选项卡中的所有视图都有自己的 NavigationView。因此,一旦用户登录,我需要以某种方式摆脱原始 NavigationView。我附加了不需要的行为,这是每个选项卡视图中的一个空导航栏,以及想要的行为,当我退出应用程序和从没有 NavigationView 的视图开始。
TD;LR 不需要:
NavigationView -> LoginView -> (if Successful) TabView
通缉:
NavigationView -> LoginView -> if Successful then
TabView - >
这是一个代码片段:
struct ContentView: View
{
@State var isActive = false
var body: some View
{
NavigationView
{
VStack(alignment: .center, spacing: 16.0)
{
NavigationLink(destination: LoginAndRegistrationView(), isActive: $isActive)
{
EmptyView()
}
Button(action: {
isActive = true
}, label: {
Text("Log in or create account")
.frame(maxWidth: .infinity)
})
.buttonStyle(.bordered)
.controlSize(.large)
.controlProminence(.increased)
Spacer()
}
.padding(.all, 16)
}
}
}
struct LoginAndRegistrationView: View
{
var body: some View
{
VStack
{
NavigationLink(destination: MainHomeView())
{
Text("Skip")
}
}
}
}
struct MainHomeView: View {
@State var tabSelection : CurrentTab = .startWorkout
@Environment(\.colorScheme) var currentTheme
var body: some View {
TabView(selection: $tabSelection)
{
View1()
.tabItem {
Image(systemName: Constants.ImageConstants.feedImg)
Text("Feed")
}
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
.tag(CurrentTab.feed)
View2()
.tabItem {
Image(systemName: Constants.ImageConstants.settingsImg)
Text("Settings")
}.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
.tag(CurrentTab.settings)
}
.navigationBarTitle("")
.navigationBarHidden(true)
.navigationBarBackButtonHidden(true)
}
}
解决方案
推荐阅读
- python - 在pygame中插入图片出现问题怎么办?
- wordpress - 未显示灵活内容的转发器字段中的 ACF 选择字段
- mysql - 找到至少有 1 个采购订单的最年轻的客户
- ruby-on-rails - Faraday::ConnectionFailed in Devise::SessionsController#create
- assembly - 使用寄存器迭代字符串
- c - 使用不带空字符的 printf 打印字符串
- python - 冒号 Python 后删除数字
- php - 从所有表中选择行的简单方法
- java - 主线程可以访问线程的 Threadlocal
- c# - EF Core - 创建没有连接字符串的迁移