我確信我想多了,最終陷入了無法解決這個問題的回圈中。簡而言之,我有一個陣列,其中包含我在主視圖的串列中顯示的日期。這些條目將根據日期的時間向用戶發出通知。我希望能夠從日期早于當前日期的陣列或視圖中洗掉條目,并且只向用戶顯示最新條目。我在網上找到的幾乎所有東西似乎都不適用于這個問題,我正在兜圈子試圖解決這個問題。
我的代碼有很多東西要解壓,所以我把它濃縮了。
struct EventListView: View {
var body: some View {
NavigationView {
//Loads the array from a CSV - no issues with this, been working with it for
all other functions in the app.
var events = loadCSV(from: "Eventtest")
List(events, id: \.id) { event in
//This function returns a true/false bool which I want to use to remove
from view/array
let eventinpast = dateInPast(value: event.date)
HStack{
VStack(alignment: .leading, spacing: 5){
Text(event.name)
.font(.subheadline)
.foregroundColor(.secondary)
Text(event.event) //confusing but this is correct.
.font(.subheadline)
.foregroundColor(.secondary)
Text(event.date)
Text(event.time)
}.frame(width: 200.0, alignment: .topLeading)
}
}
}
}
}
我試圖更改串列以包含“ForEach”,但這并不能解決問題,因為我在網上找到的所有內容都圍繞著洗掉/洗掉的用戶操作,但我希望 bool 來決定是否事件專案是否顯示/洗掉。
我已經取消了嘗試洗掉/洗掉專案的嘗試,因為此時我不斷地絆倒自己,而且我不相信我從正確的角度看待問題。最近的嘗試是這樣的:https : //www.hackingwithswift.com/books/ios-swiftui/building-a-list-we-can-delete-from 但是我沒有使用 .onDelete 我嘗試了 .onAppear 但沒有交易. 抱歉,如果提出這個問題是漫無邊際的,我已經厭倦了試圖讓我認為非常簡單的功能正常作業。
任何幫助將不勝感激!謝謝你。
uj5u.com熱心網友回復:
有時最好先做模型。
var events = loadCSV(來自:“Eventtest”)
事件 = events.filter() { !dateInPast(value: $0.date) }
uj5u.com熱心網友回復:
如何僅顯示相關事件:
var events = loadCSV(from: "Eventtest").filter { !dateInPast(value: $0.date) }
要么
List(events.filter { !dateInPast(value: $0.date) }, id: \.id) { event in
uj5u.com熱心網友回復:
非常感謝@dtm 和@ChrisR!
我知道我想太多了。我已經結束了這個。
var events = loadCSV(from: "Eventtest")
var events = events.filter { !dateInPast(value: $0.date) }
視圖范圍內還有其他一些日期評估,但可以移動到 loadCSV 函式或 dateInPast 中,也可以稍微整理一下。不幸的是,由于我的帳戶是新帳戶,因此我無法投票。不過非常感謝。干杯!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/430616.html
