import SwiftUI

struct ScrumsView: View {
    @Binding var scrums: [DailyScrum]
    @State private var isPresentingNewScrumView = false
    @State private var newScrumData = DailyScrum.Data()
    
    var body: some View {
        List {
            ForEach($scrums) { $scrum in
                NavigationLink(destination: DetailView(scrum: $scrum)) {
                    CardView(scrum: scrum)
                }
                .listRowBackground(scrum.theme.mainColor)
            }
        }
        .navigationTitle("Daily Scrums")
        .toolbar {
            Button(action: {
                isPresentingNewScrumView = true
            }) {
                Image(systemName: "plus")
            }
            .accessibilityLabel("New Scrum")
        }
        .sheet(isPresented: $isPresentingNewScrumView) {
            NavigationView {
                DetailEditView(data: $newScrumData)
                    .toolbar {
                        ToolbarItem(placement: .cancellationAction) {
                            Button("Dismiss") {
                                isPresentingNewScrumView = false
                                newScrumData = DailyScrum.Data()
                            }
                        }
                        ToolbarItem(placement: .confirmationAction) {
                            Button("Add") {
                                
                                
                                
                                
                                let newScrum = DailyScrum(data: newScrumData)
                                scrums.append(newScrum)
                                isPresentingNewScrumView = false
                                newScrumData = DailyScrum.Data()
                                
                             
                                
                            }
                        }
                    }
            }
        }
    }
}

struct ScrumsView_Previews: PreviewProvider {
    static var previews: some View {
        NavigationView {
            ScrumsView(scrums: .constant(DailyScrum.sampleData))
        }
    }
}

这是ScrumsView,我得到两个错误,行let newScrum=DailyScrum(data:newScrumData).它在"添加"按钮上.

它显示:"调用中的额外参数‘data’"&"调用中的参数‘TITLE’、‘Attendees’、‘LengthInMinents’、‘Theme’缺少参数"

我遵循了教程的每一步,甚至下载了下一章的完整文件,但这对我也没有帮助.我查看了论坛,发现在扩展DailyScrum的教程中缺少一个函数,但即使我添加了这个函数,它仍然不起作用.以下是上下文的DailyScrum文件:

import Foundation

struct DailyScrum: Identifiable {
    let id: UUID
    var title: String
    var attendees: [Attendee]
    var lengthInMinutes: Int
    var theme: Theme
    
    init(id: UUID = UUID(), title: String, attendees: [String], lengthInMinutes: Int, theme: Theme) {
        self.id = id
        self.title = title
        self.attendees = attendees.map { Attendee(name: $0) }
        self.lengthInMinutes = lengthInMinutes
        self.theme = theme
    }
}

extension DailyScrum {
  struct Attendee: Identifiable {
    let id: UUID
    var name: String
     
    init (id: UUID = UUID(), name: String) {
      self.id = id
      self.name = name
    }
  }
   
  struct Data {
    var title: String = ""
    var attendees: [Attendee] = []
    var lengthInMinutes: Double = 5
    var theme: Theme = .seafoam
  }
   
  var data: Data {
    Data(title: title, attendees: attendees, lengthInMinutes: Double(lengthInMinutes), theme: theme)
  }
   
  mutating func update(from data: Data) {
    title = data.title
    attendees = data.attendees
    lengthInMinutes = Int(data.lengthInMinutes)
    theme = data.theme
  }
}


extension DailyScrum {
    static let sampleData: [DailyScrum] =
    [
        DailyScrum(title: "Design", attendees: ["Cathy", "Daisy", "Simon", "Jonathan"], lengthInMinutes: 10, theme: .yellow),
        DailyScrum(title: "App Dev", attendees: ["Katie", "Gray", "Euna", "Luis", "Darla"], lengthInMinutes: 5, theme: .orange),
        DailyScrum(title: "Web Dev", attendees: ["Chella", "Chris", "Christina", "Eden", "Karla", "Lindsey", "Aga", "Chad", "Jenn", "Sarah"], lengthInMinutes: 5, theme: .poppy)
    ]
}

有人有解决这个问题的办法吗?

推荐答案

如果您仔细查看第2节步骤3,您会注意到他们在update函数后面添加了一个新的DailyScrum初始化器:

init(data: Data) {
    id = UUID()
    title = data.title
    attendees = data.attendees
    lengthInMinutes = Int(data.lengthInMinutes)
    theme = data.theme
}

事实上,如果您下载Updating App Data的项目文件,您会发现初始化器已经在StartingProject文件夹中了.


总之,当您学习本教程时,您应该始终下载项目文件,并开始使用StartingProject文件夹,以确保一切都与本教程中所描述的一样.

Ios相关问答推荐

设置堆栈视图的所有属性

如何遮罩,动画和添加阴影到CAShapeLayer?

自定义油漆圆角三角形

如何在iOS中以编程方式推送另一个页面?

带菜单的选取器不适用于Int32,但适用于Int

无法关闭包含字体 Select 器的工作表

为什么applicationState发布者只发布一次?

Swift Combine 防止初始值触发接收器并同时防止重复?

从iOS键盘输入时Flutter TextField输入消失

Xcode14 启动时崩溃:dyld:库未加载:/usr/lib/swift/libswiftCoreGraphics.dylib

通过函数使用 Gesture 时,键入任何视图不能符合视图

iOS,Swift 5,AppDelegate open url / .onOpenUrl - 如何找到调用我的自定义方案的调用应用程序

为什么我的应用在 Testflight 中没有下载 dSYM 按钮?

在 Swift 中按下返回键时在文本字段之间切换

UIView 和 initWithFrame 以及一个 NIB 文件.如何加载 NIB 文件?

刷新由 Xcode 7 管理的团队配置文件中的设备?

iOS:以编程方式制作屏幕截图的最快、最高效的方法是什么?

判断密钥是否存在于 NSDictionary 中

在 Objective-C 中将所有文本转换为小写

更新字段时,UITextField值已更改未触发