swiftui - 如果动态创建目的地,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 会自动弹出并没有帮助。
解决方案
我的最终解决方案是将上述函数更改为 struct view。我认为这是有道理的,因为结构视图似乎保持状态,而函数是纯无状态的。
推荐阅读
- sql-server - 如何在 SSIS 中使用 Foreach 文件枚举器加载多个平面文件时查找哪个平面文件包含数据错误
- python - 在数据框列上循环?
- hadoop - 如何插入配置单元表,按从临时表读取的日期分区?
- java - 如何使用 Java/Springboot 在 MongoDB 中存储字符串列表
- java - 将多个 Java Swing 应用程序合并为一个
- node.js - 为什么我在 Heroku 部署的 React.js/Node.js/Express.js 应用程序上收到此 500(内部服务器错误),即使一切正常?
- javascript - 动态创建对象图
- mysql - 将 first_name 和 last_name 列中的名称截断为 1 个字符的最有效方法是什么?
- regex - 在环视中使用捕获组
- r - 带有ggplot2的for循环