我的问题是,当我单击ListView中的特定项时,我希望它将我发送到我的SwiftUI项目中的另一个文件.我得到一个错误-Cannot convert value of type 'Season' to expected argument type '[Fruit]'.您可以通过我的代码中的注释来查看错误所在.以下是我的代码:

//
//  SideMenuView.swift
//  Fruity
//
//  Created by Hristo on 25.11.23.
//

import SwiftUI

struct SideMenuView: View {
  
    var fruits: [Fruit] = fruitsData
    var seasons: [Season] = seasonData
    @AppStorage("isContent") var isContent: Bool?
    
  var body: some View {
    VStack {
      Text("Choose a season of your choice:")
            .fontWeight(.bold)
        .font(.title)
        .foregroundColor(.black)
        .multilineTextAlignment(.center)
      
      Divider()
        .frame(width: 300, height: 2)
        .background(Color.black)
        .padding(.horizontal, 16)
      
      // MARK: - Content
      
        List {
            ForEach(seasons[0...3]) { item in
                NavigationLink(destination: ContentView1(fruits: item)) { // The error is here !!!
                    SeasonRowView(seasons: item)
                        .padding(.vertical, 4)
                }
            }
        }
      .font(.title)
      
      Spacer()
    }
    .padding(32)
    .background(Color.white)
    .edgesIgnoringSafeArea(.bottom)
  }
  
}

#Preview {
    SideMenuView(fruits: fruitsData, seasons: seasonData)
}
import SwiftUI
import SwiftData

struct ContentView: View {
        
    @State private var isShowingSettings: Bool = false
    @State private var showMenu: Bool = false
    @AppStorage("isContent") var isContent: Bool?
    
    var fruits: [Fruit] = fruitsData
    
    var body: some View {
        NavigationView {
            List {
                ForEach(fruits[0...3]) { item in
                    NavigationLink(destination: FruitDetailView(fruit: item)) {
                        FruitRowView(fruit: item)
                            .padding(.vertical, 4)
                    }
                }
            }
      // Some useless code for this situation...
    }

这是我的GitHub回购:https://github.com/HristoMihovski/Fruity

我试着在网上冲浪,但没有成功.我试着try 不同的代码组合,这些代码突然出现在我的脑海中--但没有成功.请不要批评我,因为我13岁了,我刚开始编程--6个月.谢谢.

推荐答案

我在这里看到了多个问题

  1. 您正在try 将item(Season)传递给期望fruits([Fruit])的初始化式.

  2. 你没有NavigationStackNavigationSplitView,为了推送视图,你需要一个导航来包装所有堆栈.

  3. 考虑清理您的代码,这包括:

    1. 命名约定

    2. 合并ListForEach

    3. 另外,避免使用这样的索引.感谢@jnpdx

      You can do something like:

List(fruits.prefix(4)) { item in
    // ...
}

Swift相关问答推荐

DynamicView Content的修改视图?

如何更新Square Order?

为什么我的引用类型对象在初始化后有3个强引用?

如何返回JSON数据?

如何使泡泡上的箭头直达封闭矩形

从Firebase播放音频文件不起作用

从`compactMap()`闭包返回`nil`未通过结果类型判断

按数组大小进行类型判断?

如何判断设备是否为 Vision Pro - Xcode 15 Beta 4

如何删除快速处理消息

如何从我的 macOS 应用程序打开 (.log) 文件?

从 actor 的 init 方法调用方法

从 iPhone 中的安全飞地获取真正的随机数?

您是否必须手动指定您的 DispatchQueue 是串行的?

与 SwiftUI 中的 onChange 修饰符相比,objectWillChangeSequence 的目的是什么?

如何在 ZStack 中单独下移卡片?

SwiftUI:当先前的视图列表更改时,NavigationView 详细视图会弹出回栈

在 ViewController 的 UICollectionView 中拉取刷新

更新我的 pod 导致 GoogleDataTransport Umbrella 标头出现错误

你如何在 UIBarItem 中使用 setTitleTextAttributes:forState?