![](/img/trans.png)
[英]navigationBarItems “Type [view] cannot conform to 'View'; only struct/enum/class types can conform to protocols”
[英]While using an if statement: Type '()' cannot conform to 'View'; only struct/enum/class types can conform to protocols
我正在嘗試實現一個按鈕,該按鈕通過列表中的每個項目激活 ForEach 循環到 go 並將其標記為延遲。 這是我的代碼:
import SwiftUI
struct AllJobsDelayWeather: View{
var jobIndividualViewModel: JobIndividualViewModel
@State public var comparisonDate = getCurrentDate()
var body: some View{
let jobDate = ParserDate(date: jobIndividualViewModel.job.date)
Text(" ")
if jobIndividualViewModel.job.completed == false && jobDate == comparisonDate{ //error is here
jobIndividualViewModel.delayWeather(jobIndividualViewModel.job)
Text(" ")
}
Text(" ")
}
}
這是程序的“主要”(如果你可以調用它)部分
Button("Delay Bad Weather"){
ForEach(jobViewModel.jobIndividualViewModels) { jobVM in
AllJobsDelayWeather(jobIndividualViewModel: jobVM)
}
}.padding()
我收到此錯誤:類型“()”不能符合“視圖”; 只有結構/枚舉/類類型可以符合協議。 function 工作正常並且已經過“臨時”測試。 我不知道如何擺脫編譯器拋出的錯誤。
編輯目前正在嘗試這樣做:
//in body
Button("Delay Bad Weather"){
ForEach(jobViewModel.jobIndividualViewModels) { jobVM
//errors getting thrown above
AllJobDelayWeather(jobVM: jobVM)
}
}.padding()
//outside if struct in the same file
func AllJobDelayWeather(jobVM: JobIndividualViewModel){
let comparisonDate = getCurrentDate()
let jobDate = ParserDate(date: jobVM.job.date)
if jobVM.job.completed == false && jobDate == comparisonDate{
jobVM.delayWeather(jobVM.job)
}
}
我現在收到 2 個錯誤實例,一個在 ForEach 的 F 上,一個在 jobVM 的第一個實例之前的 {。
正如評論中提到的,您正在使用ForEach
,這是一個 SwiftUI 視圖,位於 Button 的action
閉包內,您無法在其中查看。 查看更新后的代碼,您似乎只需要一個常規的 forEach。 就像是:
Button("Delay Bad Weather") {
jobViewModel.jobIndividualViewModels.forEach { jobVM
allJobDelayWeather(jobVM: jobVM)
}
}.padding()
func allJobDelayWeather(jobVM: JobIndividualViewModel){
let comparisonDate = getCurrentDate()
let jobDate = ParserDate(date: jobVM.job.date)
if jobVM.job.completed == false && jobDate == comparisonDate{
jobVM.delayWeather(jobVM.job)
}
}
我將您的 function 名稱更改為小寫,因為這是 Swift 中的首選命名約定。 就像您在評論中暗示的那樣,讓 function 漂浮在視圖之外也有些不尋常——它可能屬於視圖內部或視圖 model 內部(很難說,因為我看不到您的所有代碼)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.