[英]SwiftUI - NavigationLink inside of NavigationLink Bug
[英]Ternary operator inside NavigationLink SwiftUI
尝试在 NavigationLink 中的按钮上使用三元运算符时遇到问题。 我有一系列广告系列,显示在 carouselView 中。 Bellow carousel 有一个按钮(NavigationLink),用于打开另一个显示活动详细信息的视图。 活动数组最初是空的,所以我必须检查 self.cardCampaigns > 0,如果这是真的,它应该导航到显示活动详细信息的视图,否则忽略(我正在尝试显示带有文本的视图“没有可用的广告系列”。我为此使用了三元运算符,但它不起作用。我在使用三元运算符时得到“'结果值'?:'表达式的类型不匹配'CampaignDetailsView'和'Text'”错误。
我的代码如下:
NavigationLink(destination:
self.cardCampaigns.count > 0 ? CampaignDetailsView(viewModel: CampaignDetailsViewModel(campaign: cardCampaigns[self.count].campaign)) : Text("No Campaign found")
) {
ZStack {
RoundedRectangle(cornerRadius: 8)
.foregroundColor(Color.orOrangeColor)
.frame(width: 300, height: 50)
Text("Details")
.foregroundColor(.white)
}
}
这是因为CampaignDetailsView
和Text
的类型不匹配。 您需要使用@ViewBuilder
(或仅使用Group
、 VStack
等)。
这是一个将目标视图作为@ViewBuilder
计算属性的解决方案:
@ViewBuilder
var destinationView: some View {
if cardCampaigns.count > 0 {
CampaignDetailsView(viewModel: CampaignDetailsViewModel(campaign: cardCampaigns[self.count].campaign))
} else {
Text("No Campaign found")
}
}
您可以像这样使用:
NavigationLink(destination: destinationView) { ... }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.