Ios 如何替换SwiftUI中的当前视图?
我正在用SwiftUI开发一个应用程序 我有一个导航视图,导航栏上有按钮。我想用另一个视图替换当前视图,该视图是选项卡视图选择的结果 基本上,当用户单击“编辑”按钮时,我想用另一个视图替换视图以进行编辑,当用户完成编辑后,通过单击“完成”按钮恢复上一个视图 我可以使用一个变量来动态选择当前选项卡视图上显示的视图,但我觉得在SwiftUI中这不是正确的方法。这样我就无法应用任何过渡视觉效果 一些代码示例来解释我在寻找什么 私有扩展ContentView{ @视图生成器 var navigationBarLeadingItems:一些视图{ 如果tabSelection==3{ 按钮操作:{ 打印编辑按下 //在这里,我想暂时用另一个视图替换tabSelection 3视图,并更新导航栏项目 } { 文本编辑 } } } } 结构ContentView:视图{ var body:一些观点{ 导航视图{ TabViewselection:$tabSelection{ 联系页 .tabItem{ 文本1 } .tag1 短信聊天 .tabItem{ 文本2 } .tag2 设置视图 .tabItem{ 文本3 } .tag3 }.NavigationBarItemsReading:navigationBarLeadingItems } } } 多谢各位 编辑Ios 如何替换SwiftUI中的当前视图?,ios,swift,swiftui,swiftui-navigationview,swiftui-tabview,Ios,Swift,Swiftui,Swiftui Navigationview,Swiftui Tabview,我正在用SwiftUI开发一个应用程序 我有一个导航视图,导航栏上有按钮。我想用另一个视图替换当前视图,该视图是选项卡视图选择的结果 基本上,当用户单击“编辑”按钮时,我想用另一个视图替换视图以进行编辑,当用户完成编辑后,通过单击“完成”按钮恢复上一个视图 我可以使用一个变量来动态选择当前选项卡视图上显示的视图,但我觉得在SwiftUI中这不是正确的方法。这样我就无法应用任何过渡视觉效果 一些代码示例来解释我在寻找什么 私有扩展ContentView{ @视图生成器 var navigation
我有一个工作版本,我只是在我的按钮操作中更新一个切换变量,使我的视图显示一个或另一个东西,它正在工作,但我不能对它应用任何动画效果,而且它在SwiftUI中看起来不正确,我想有更好的东西我不知道。如果你只是想添加动画,你可以尝试:
struct ContentView: View {
...
@State var showEditView = false
var body: some View {
NavigationView {
TabView(selection: $tabSelection) {
...
view3
.tabItem {
Text("3")
}
.tag(3)
}
.navigationBarItems(leading: navigationBarLeadingItems)
}
}
}
一种可能的替代方法是使用ViewRouter:。如果您只想添加动画,可以尝试:
struct ContentView: View {
...
@State var showEditView = false
var body: some View {
NavigationView {
TabView(selection: $tabSelection) {
...
view3
.tabItem {
Text("3")
}
.tag(3)
}
.navigationBarItems(leading: navigationBarLeadingItems)
}
}
}
一种可能的替代方法是使用ViewRouter:。谢谢。我尝试将.transition.slide应用于一个表单{}组,该表单仅在showEditView为true时显示,但它似乎不起作用。没有动画效果。我尝试将.transition应用于表单的每个子项,但结果相同。@BountyHunter我更新了代码,显示了一个新表单。我可以看到转换动画Xcode 11.6,iOS 13.6。在本例中,您可能还需要将.animation.default添加到要设置动画的部分TabView或NavigationViewvar settingsview:some视图{VStack{DisplayProfilecontact:self_info.padding.top Spacer如果设置了它{TextHello1.transition.slide}其他{TextHello2.transition.slide}}我像你一样设置了所有东西,但这里有一个奇怪的行为:当我不点击编辑时:这是正常的,但当我点击时:也没有过渡动画更新:我让它工作了,它不是完美的,但现在就可以了。我上面截图上的问题是因为我使用了.transition.slide而没有.animation.default这使得文本在没有完成动画的情况下复制…谢谢。我尝试将.transition.slide应用到表单{}bloc,仅当showEditView为true时才显示,但它似乎不起作用。没有动画效果。我尝试将.transition应用于表单的每个子项,但结果是相同的。@BountyHunter我用显示新表单的方式更新了代码。我可以看到转换动画Xcode 11.6,iOS 13.6。您可能还需要添加.anim默认设置为在本例中要设置动画的部分TabView或NavigationViewvar settingsview:some视图{VStack{DisplayProfilecontact:self_info.padding.top Spacker if settingsEdit{TextHello1.transition.slide}其他{TextHello2.transition.slide}}我像你一样设置了所有东西,但这里有一个奇怪的行为:当我不点击编辑时:这是正常的,但当我点击时:也没有过渡动画更新:我让它工作了,它不是完美的,但现在就可以了。我上面截图上的问题是因为我使用了.transition.slide而没有.animation.default使文本在未完成动画的情况下复制。。。