【发布时间】:2021-09-17 22:43:40
【问题描述】:
这只是 iOS 15 RC 上的问题。它在 iOS 14 上运行良好。
问题是如果我在 NavigationLink 上的目的地是动态创建的,如果我尝试通过 NavigationLink 推送视图,它会自动弹出。这是一个位代码sn-p
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 pops automatically 没有帮助。
【问题讨论】:
-
只是一个提示——给
createSettingNavigationLink一个some View返回类型,使用switch name { ... },然后你可以删除returns和AnyViews。 -
拥有minimal reproducible example 会很有帮助。你在这里拥有的东西不会为其他人编译。
-
@LiangWang:为什么选择 AnyView?为什么不查看?为什么这么多如果?为什么不切换?或者为什么不是 dic?
-
谢谢,我已经删除了 AnyView。但是,我的重点是为什么我的案例在 iOS 15 中不起作用(可以编译但行为不正确)
-
我已经编写了一些类似于您的 sn-p 的测试代码,但无法复制您的问题(如果有兴趣,我可以显示测试代码)。使用 Xcode 13-beta(不是 Xcode 13-RC)在 ios-15 RC 上一切正常。也许您的问题与未显示的其他代码/上下文有关。