斯威夫特用户界面。 NavigationView 嵌套按钮

时间:2021-05-28 09:51:23

标签: ios swiftui

我有一个列表视图。如果我选择其中一行,我可以移动到详细信息视图。但有一个问题。在列表视图中,我使用 NavigationView 通过 NavigationLink 跳转到详细视图。详细信息视图中有一个后退按钮,我想将另一个按钮设置为另一个视图,我可以在其中添加一些数据。但有一个问题。我看到后退按钮,但没有按钮可以查看可以添加数据的位置。我知道它与 NavigationView 有关,但我不知道如何解决。我从详细信息视图中删除了 NavigationView,但仍然无法将按钮设置为 NavigationBar 中的另一个视图。

DataView(详细视图): 如您所见,导航栏中没有按钮。我想将它设置在与车辆后退按钮相同的行中。

enter image description here

StartView(列表视图):

import SwiftUI

struct StartView: View {

@ObservedObject var viewModel: StartViewModel
var addVehicleViewModel: AddVehicleViewModel
@State var showSheetView = false

var body: some View {
   
    NavigationView {
        
        List(viewModel.vehicles) { vehicle in
            NavigationLink(destination: DetailView(vehicle: vehicle)) {
                StartRow(vehicle: vehicle)
            }
        }
        .navigationBarTitle("Vehicles")
        .onAppear(perform: {
            UITableView.appearance().separatorStyle = .none
            self.viewModel.fetchVehicles()
        })
    .navigationBarItems(trailing:
        Button(action: {
            self.showSheetView.toggle()
        }, label: {
            Text("+").font(.system(size: 43))
        })
            .sheet(isPresented: $showSheetView) {
                AddVehicleView(viewModel: self.addVehicleViewModel)
        }
        )
    }
    
}
}

DataView(详细信息视图 - 有一个 TabView,这是不同名称的原因):

import SwiftUI

struct DataView: View {

var vehicle: Vehicle
@State var showSheetView = false

var body: some View {
    
    NavigationView {
    VStack() {
        Color.red
        Button(action: {
                       self.showSheetView.toggle()
            print("DataView TAPPED")
                   }, label: {
                       Text("+").font(.system(size: 43))
                   })
                       .sheet(isPresented: $showSheetView) {
                           RefuelingListView()
                   }
    }
}
    .navigationBarTitle(vehicle.model)
}
}

0 个答案:

没有答案