首页 > 解决方案 > 如果动态创建目的地,iOS 15 NavigationLink 会自动弹出

问题描述

这只是 iOS 15 RC 上的问题。它在 iOS 14 上运行良好。

问题是如果我在 NavigationLink 上的目的地是动态创建的,如果我尝试通过 NavigationLink 推送视图,它会自动弹出。这是一个位代码片段

 NavigationLink(
     destination: (createSettingNavigationLink(name: nameAndImage[0])),
     label: {
         CellButton(title: nameAndImage[0], image: nameAndImage[1])
     }

func createSettingNavigationLink(name: String) -> some View {
        if name == "shop.Settings" {
            return ShopSettings()
        }
        if name == "shop.Goods" {
            return ShopGoodsManagementPage()
        }
        if name == "shop.Order" {
            return ShopOrderPage()
        }
        if name == "Customer Service" {
            return ServiceListPage(isStore: true)
        }
        if name == "shop.Performance" {
            return PerformanceManagementPage()
        }
        if name == "shop.Earnings" {
            return CommissionSummaryPage()
        }
        if name == "shop.Increase_sales" {
            return BCWebView(urlStr: Constants.increaseSalesGuide)
                    .navigationBarTitle(Text("Increase Sales Guide"), displayMode: .inline)
                    .navigationBarHidden(false)
            )
        }
        return EmptyView()
    }

)


顺便说一句,这里提到的方法SwiftUI Unexpectedly NavigationLink 会自动弹出并没有帮助。

标签: swiftuiios15

解决方案


我的最终解决方案是将上述函数更改为 struct view。我认为这是有道理的,因为结构视图似乎保持状态,而函数是纯无状态的。


推荐阅读