标签: swiftui-navigationlink

SwiftUI 嵌套导航视图显示多个导航栏

我的 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  } \n
Run Code Online (Sandbox Code Playgroud)\n\n

但现在由于另一个 NavigationView 中有一个 NavigationView,我最终在顶部有 2 个导航栏。

\n\n

2 个导航栏

\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)

swiftui-navigationlink

1
推荐指数
1
解决办法
2788
查看次数

SwiftUI - 导航栏颜色更改未应用于状态栏

我有以下几点:

var body: some View {
        NavigationView {
            VStack {
                 Text("Hello")
            }.navigationBarTitle("Edit Profile", displayMode: .inline)
             .background(NavigationConfiguration { nc in
                 nc.navigationBar.barTintColor = .red
                 nc.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.black]
            })
        }.navigationViewStyle(StackNavigationViewStyle())
}
Run Code Online (Sandbox Code Playgroud)

对于导航栏的配置,我有:

struct NavigationConfiguration: UIViewControllerRepresentable {
    var configuration: (UINavigationController) -> Void = { _ in }
    func makeUIViewController(context: UIViewControllerRepresentableContext<NavigationConfiguration>) -> UIViewController {
        UIViewController()
    }
    func updateUIViewController(_ uiViewController: UIViewController, context: UIViewControllerRepresentableContext<NavigationConfiguration>) {
        if let nc = uiViewController.navigationController {
            self.configuration(nc)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是由于某种原因,顶部状态栏被排除在外,并且没有对其应用颜色:

状态栏图片

如何将红色也应用于导航栏上方的状态栏,我希望它是相同的颜色。

我试过下面的,但这失败了:

init() {
    UINavigationBar.appearance().backgroundColor = .red
}
Run Code Online (Sandbox Code Playgroud)

uinavigationbar uinavigationcontroller swift swiftui swiftui-navigationlink

1
推荐指数
1
解决办法
603
查看次数

删除导航标题的空格,但不删除后退按钮

我想删除 NavigationTitle 空间而不删除后退按钮。

我已经尝试过这个:

.navigationBarItems(trailing:
  NavigationLink(destination: Preferences(viewModel: viewModel).navigationBarHidden(true)) {
      Image(systemName: "gear")
          .font(.title2)
  }
)
Run Code Online (Sandbox Code Playgroud)

但这也删除了后退按钮。

ios swift swiftui swiftui-navigationlink swiftui-navigationview

1
推荐指数
1
解决办法
908
查看次数

LazyVGrid 内的 NavigationLink 在 swiftUI macOS 中无法正确显示

我正在 SwifUI 中开发一个跨平台应用程序。在 iPhone / iPad 上,这段代码在 MacOS 上运行得非常好,相反,当我插入 NavigationLink 时,ForecastCardView 被完全切断。当我删除 NavigationLink 时,一切都会正确呈现。

带有导航链接

var FullSection: some View {
    LazyVGrid(columns: homeConfigurationUI.columns, alignment: .center, spacing: 20) {
            NavigationLink(destination: Text("test")) {
                  ForecastCardView(viewModel:  ForecastCardViewModel.initForTest())
            }.frame(width: 300, height: 300, alignment: .center)
        }
        .border(Color.yellow)
        .frame(minWidth: 300, idealWidth: 400, maxWidth: 600, minHeight: 0, idealHeight: 500, maxHeight: .infinity, alignment: .center)
}
Run Code Online (Sandbox Code Playgroud)

带有导航链接的图像

没有导航链接

var FullSection: some View {
        LazyVGrid(columns: homeConfigurationUI.columns, alignment: .center, spacing: 20) {
                ForecastCardView(viewModel:  ForecastCardViewModel.initForTest())
            }
            .border(Color.yellow)
            .frame(minWidth: 300, idealWidth: 400, maxWidth: 600, minHeight: …
Run Code Online (Sandbox Code Playgroud)

macos swiftui swiftui-list swiftui-navigationlink swiftui-scrollview

1
推荐指数
1
解决办法
798
查看次数

SwiftUI:更新变量时导航链接会弹出

我遇到这样的问题:更新变量时导航链接会弹出。这有点令人困惑,因为这种行为不会发生在应用程序的其他地方,但我正在做同样的事情。

首先,有一个符合可识别性的 Vehicle 结构。在内容视图中,它显示在滚动视图中的 NavigationView 中。

ScrollView(showsIndicators: false) {
            VStack {
                ForEach(user.vehicles) { vehicle in
                    VehicleListItem(user: $user,
                                    vehicle: vehicle)

                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

该列表项有一个导航链接,可将用户带到不同的视图。车辆作为绑定传递到下一个视图。

NavigationLink(destination: {
                VehicleView(user: $user,
                            vehicle: $user.vehicles[user.vehicles.firstIndex(where: {$0.id == vehicle.id})!],
                            make: vehicle.make,
                            model: vehicle.model,
                            year: vehicle.year
                )
            }, label: {
                Image(systemName: "car")
                    .font(.system(size: 100))
            }).padding(.bottom, 20)
Run Code Online (Sandbox Code Playgroud)

在车辆视图中,用户可以编辑车辆信息(品牌、型号、年份)并且工作正常。当用户对车辆进行更改时,它不会弹回之前的视图。

Section() {
            VehicleHandler(make: $make, model: $model, year: $year)
            
            Button(action: {
                //Update
                vehicle.make = make
                vehicle.model = model
                vehicle.year = year
                
            }, label: {
                ButtonView(label: "Update")
            }).disabled(make.isEmpty ||
                        model.isEmpty ||
                        (make == …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-navigationlink swiftui-navigationview

1
推荐指数
1
解决办法
2209
查看次数