繁体   English   中英

NavigationLink SwiftUI 中的三元运算符

[英]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)
    }
}

在此处输入图片说明

这是因为CampaignDetailsViewText的类型不匹配。 您需要使用@ViewBuilder (或仅使用GroupVStack等)。

这是一个将目标视图作为@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM