我有一个包含导航栏项目的视图,并将该视图嵌入到TabView. 但这样做时,栏项目不再出现。如果我在 a 之外调用视图,TabView一切都会按预期进行。
下面是一个小示例项目来说明我的问题,请注意,TabView最初不会调用ContentView,但稍后会调用:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView{
NavigationLink(destination: WarehouseOrderTabView()){
Text("Click me")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct WarehouseOrderTabView: View {
var body: some View {
TabView{
TabView1().navigationBarTitle("Dashboard")
.tabItem {
Image(systemName: "gauge")
Text("Dashboard")
}
TabView2().navigationBarTitle("Orders")
.tabItem {
Image(systemName: "list.dash")
Text("Orders")
}
}
}
}
struct TabView1: View {
var body: some …Run Code Online (Sandbox Code Playgroud) 我的 ContentView 包括一个 NavigationView,我通过 NavigationLink 向下钻取到显示列表的 OverviewView,然后通过 NavigationLink 向下钻取到 DetailView。现在我想点击 DetailView 中的文本并调出另一个视图,但是当我现在尝试向该对象添加 NavigationLink 时,我收到一条错误,指出 NavigationLink 需要嵌入到 NavigationView 中,因此我将代码更改为
\n\n NavigationView{ \n ScrollView() { \n VStack{ \n VStack(spacing: -25) { \n HStack(spacing: -25) { \n NavigationLink(destination: WarehouseOrderLinesView(warehouseOrderLines: warehouseOrderLineController.warehouseOrderLines)){ \n TaskSummaryView(title: "Total Lines", color: .blue, icon: "list.dash", value: warehouseOrderLineController.warehouseOrderLines.count) \n } \nRun Code Online (Sandbox Code Playgroud)\n\n但现在由于另一个 NavigationView 中有一个 NavigationView,我最终在顶部有 2 个导航栏。
\n\n\n\n有没有办法使用 NavigationLink 而不将其嵌入到另一个 NaviagationView 中,或者通过不使用 NavigationLink 和 .sheet 之类的东西导航到另一个视图(我不想将新视图显示为模态!)。
\n\n下面是完整的测试示例代码:
\n\n\n// \n// ContentView.swift \n// Two Navbars \n// \n// Created …Run Code Online (Sandbox Code Playgroud) 我有一个由按钮触摸触发的视图。看起来不错,一切都很好。现在我希望视图在几秒钟后再次自动消失。
视图应该自动消失,无需再次点击按钮。
下面是我的测试项目
import SwiftUI
struct ContentView: View {
@State private var presentClipboardView = false
@State private var scale: CGFloat = 1.0
var body: some View {
VStack{
Button(action: {
let pasteboard = UIPasteboard()
pasteboard.string = "http://I_AM_A_URL.com"
withAnimation(.easeInOut(duration: 2)) {
self.presentClipboardView.toggle()
}
}, label: {
HStack {
Image(systemName: "list.dash")
.padding(.trailing)
VStack(alignment: .leading) {
Text("Open URL")
.font(.headline)
}
Spacer()
}
}
)
if(self.presentClipboardView){
LabelView()
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
} …Run Code Online (Sandbox Code Playgroud)