为什么在模拟器或设备上赢了列表

发布于 2025-01-22 03:21:25 字数 6768 浏览 3 评论 0原文

我已经在Xcode 13.3.1中制作了iPhone/iPad应用程序(带有手表应用程序),但无法弄清楚如何显示列表(我不明白为什么不显示它)。问题既是模拟器和设备上的问题。我已经在代码中标记了列表,

import SwiftUI
struct Period: Identifiable {
    let name: String
    //Day for the period
    let day: Day
    let id = UUID()
}
struct Day: Hashable{
    let weekday: Days
    let schedule: Schedule
}
enum Days: String, CaseIterable, Identifiable{
    var id: String{
        rawValue
    }
    case monday
    case tuesday
    case wednesday
    case thursday
    case friday
}
enum Schedule: String, CaseIterable, Identifiable{
    var id: String{
        rawValue
    }
    case a
    case b
}

我刚刚展示了一个示例以使其更可读。

private var schedule = [
Period(name: "rateing: 3", day: .init(weekday: .monday, schedule: .a)),
Period(name: "form", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Maths", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Break", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Science", day: .init(weekday: .monday, schedule: .a)),
Period(name: "French", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Lunch", day: .init(weekday: .monday, schedule: .a)),
Period(name: "English", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Re", day: .init(weekday: .monday, schedule: .a)),
Period(name: "extra library help", day: .init(weekday: .monday, schedule: .a)),


Period(name: "rateing: 3", day: .init(weekday: .monday, schedule: .b)),
Period(name: "form", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Maths", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Break", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Science", day: .init(weekday: .monday, schedule: .b)),
Period(name: "French", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Lunch", day: .init(weekday: .monday, schedule: .b)),
Period(name: "English", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Re", day: .init(weekday: .monday, schedule: .b)),
Period(name: "extra library duty", day: .init(weekday: .monday, schedule: .b)),
]

如果需要列表的其余部分,则很抱歉,我将提供。

struct ContentView: View {
    
    @State private var current = 5.0
    @State private var minValue = 0.0
    @State private var maxValue = 13.0
    @State private var track = 1.0
    
    let gradient = Gradient(colors: [.green, .yellow, .orange, .red])
    
    @State var re = false
    @State var science = false
    @State var maths = false
    @State var english = false
    @State var history = false
    @State var geography = false
    @State var dt = false
    @State var art = false
    @State var computeing = false
    @State var drama = false
    @State var music = false
    @State var french = false
    @State var german = false
    
    @State var task = 0
    @State var Bre = 0
    @State var Bscience = 0
    @State var Bmaths = 0
    @State var Benglish = 0
    @State var Bhistory = 0
    @State var Bgeography = 0
    @State var Bdt = 0
    @State var Bart = 0
    @State var Bcomputeing = 0
    @State var Bdrama = 0
    @State var Bmusic = 0
    @State var Bfrench = 0
    @State var Bgerman = 0
    
    @State var selectedday: Day? = nil
    @State var selection: Options = .list
    //Contains a filtered list if `selectedday != nil`
    var filteredSchedule: [Period]{
        schedule.filter({ period in
            if let selectedday = selectedday {
                return period.day.weekday == selectedday.weekday && period.day.schedule == selectedday.schedule
            }else{
                return true
            }
        })
    }
    
    
    
    var body: some View {
        VStack {
            ProgressView(value: current/13)
                .padding(.horizontal)
                .frame(height: 20.0)
                
        // homework
            HStack {
                VStack{
                    Toggle("Re", isOn: $re)
                    Toggle("English", isOn: $english)
                    Toggle("Dt", isOn: $dt)
                    Toggle("French", isOn: $french)
                }
                VStack{
                    Toggle("Science", isOn: $science)
                    Toggle("History", isOn: $history)
                    Toggle("Art", isOn: $art)
                    Toggle("German", isOn: $german)
                    Toggle("Drama", isOn: $drama)
                }
                VStack{
                    Toggle("Maths", isOn: $maths)
                    Toggle("Geography", isOn: $geography)
                    Toggle("Computeing", isOn: $computeing)
                    Toggle("Music", isOn: $music)
                }
            }.padding(.horizontal).toggleStyle(.button).foregroundColor(Color.black)
            
                            
            Divider().padding(.vertical)   // homework timetable divide
            
        // timetable
            
            ScrollView{
            

下方的列表

                HStack { 
                    List {
                        Text("Score:")
                        Text("Registration")
                        Text("P1")
                        Text("Break")
                        Text("P2")
                        Text("P3")
                        Text("Lunch")
                        Text("P4")
                        Text("P5")
                        Text("Club")
                    }
                    List(filteredSchedule) {
                        Text($0.name)
                            .font(.body)
                            .padding(.all)
                    }
                }  
            }
        

其余代码的其余部分

            Divider()
                .padding(.vertical)   // timetable - picker divide
            
        // timetable picker
            
            Picker(selection: $selectedday, label: Text("")){
                Text("pick day here").padding(.top).tag(nil as Day?) //Types must match exactly
                ForEach(Days.allCases, id:\.id){ dCase in
                    Group{
                        Text("A - ".capitalized) + Text("\(dCase.rawValue)".capitalized)
                    }
                    .tag(Day(weekday: dCase, schedule: .a) as Day?) //Types must match exactly
                    Group{
                        Text("B - ".capitalized) + Text("\(dCase.rawValue)".capitalized)
                    }
                    .tag(Day(weekday: dCase, schedule: .b) as Day?) //Types must match exactly
                }
            }
            
        }
    }
    
    enum Options{
        case list
        case selection
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

I have made a iPhone/iPad app (with watch app) in Xcode 13.3.1 and can't figure out how to get the list to show (I don't see why it isn't showing). the issue is both in simulator and on device. I have marked the list in the code

import SwiftUI
struct Period: Identifiable {
    let name: String
    //Day for the period
    let day: Day
    let id = UUID()
}
struct Day: Hashable{
    let weekday: Days
    let schedule: Schedule
}
enum Days: String, CaseIterable, Identifiable{
    var id: String{
        rawValue
    }
    case monday
    case tuesday
    case wednesday
    case thursday
    case friday
}
enum Schedule: String, CaseIterable, Identifiable{
    var id: String{
        rawValue
    }
    case a
    case b
}

there is more of the following variable I have just shown an example to make it more readable.

private var schedule = [
Period(name: "rateing: 3", day: .init(weekday: .monday, schedule: .a)),
Period(name: "form", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Maths", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Break", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Science", day: .init(weekday: .monday, schedule: .a)),
Period(name: "French", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Lunch", day: .init(weekday: .monday, schedule: .a)),
Period(name: "English", day: .init(weekday: .monday, schedule: .a)),
Period(name: "Re", day: .init(weekday: .monday, schedule: .a)),
Period(name: "extra library help", day: .init(weekday: .monday, schedule: .a)),


Period(name: "rateing: 3", day: .init(weekday: .monday, schedule: .b)),
Period(name: "form", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Maths", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Break", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Science", day: .init(weekday: .monday, schedule: .b)),
Period(name: "French", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Lunch", day: .init(weekday: .monday, schedule: .b)),
Period(name: "English", day: .init(weekday: .monday, schedule: .b)),
Period(name: "Re", day: .init(weekday: .monday, schedule: .b)),
Period(name: "extra library duty", day: .init(weekday: .monday, schedule: .b)),
]

if the rest of the list is required then sorry and I will provide.

struct ContentView: View {
    
    @State private var current = 5.0
    @State private var minValue = 0.0
    @State private var maxValue = 13.0
    @State private var track = 1.0
    
    let gradient = Gradient(colors: [.green, .yellow, .orange, .red])
    
    @State var re = false
    @State var science = false
    @State var maths = false
    @State var english = false
    @State var history = false
    @State var geography = false
    @State var dt = false
    @State var art = false
    @State var computeing = false
    @State var drama = false
    @State var music = false
    @State var french = false
    @State var german = false
    
    @State var task = 0
    @State var Bre = 0
    @State var Bscience = 0
    @State var Bmaths = 0
    @State var Benglish = 0
    @State var Bhistory = 0
    @State var Bgeography = 0
    @State var Bdt = 0
    @State var Bart = 0
    @State var Bcomputeing = 0
    @State var Bdrama = 0
    @State var Bmusic = 0
    @State var Bfrench = 0
    @State var Bgerman = 0
    
    @State var selectedday: Day? = nil
    @State var selection: Options = .list
    //Contains a filtered list if `selectedday != nil`
    var filteredSchedule: [Period]{
        schedule.filter({ period in
            if let selectedday = selectedday {
                return period.day.weekday == selectedday.weekday && period.day.schedule == selectedday.schedule
            }else{
                return true
            }
        })
    }
    
    
    
    var body: some View {
        VStack {
            ProgressView(value: current/13)
                .padding(.horizontal)
                .frame(height: 20.0)
                
        // homework
            HStack {
                VStack{
                    Toggle("Re", isOn: $re)
                    Toggle("English", isOn: $english)
                    Toggle("Dt", isOn: $dt)
                    Toggle("French", isOn: $french)
                }
                VStack{
                    Toggle("Science", isOn: $science)
                    Toggle("History", isOn: $history)
                    Toggle("Art", isOn: $art)
                    Toggle("German", isOn: $german)
                    Toggle("Drama", isOn: $drama)
                }
                VStack{
                    Toggle("Maths", isOn: $maths)
                    Toggle("Geography", isOn: $geography)
                    Toggle("Computeing", isOn: $computeing)
                    Toggle("Music", isOn: $music)
                }
            }.padding(.horizontal).toggleStyle(.button).foregroundColor(Color.black)
            
                            
            Divider().padding(.vertical)   // homework timetable divide
            
        // timetable
            
            ScrollView{
            

the lists below

                HStack { 
                    List {
                        Text("Score:")
                        Text("Registration")
                        Text("P1")
                        Text("Break")
                        Text("P2")
                        Text("P3")
                        Text("Lunch")
                        Text("P4")
                        Text("P5")
                        Text("Club")
                    }
                    List(filteredSchedule) {
                        Text($0.name)
                            .font(.body)
                            .padding(.all)
                    }
                }  
            }
        

the rest of the code

            Divider()
                .padding(.vertical)   // timetable - picker divide
            
        // timetable picker
            
            Picker(selection: $selectedday, label: Text("")){
                Text("pick day here").padding(.top).tag(nil as Day?) //Types must match exactly
                ForEach(Days.allCases, id:\.id){ dCase in
                    Group{
                        Text("A - ".capitalized) + Text("\(dCase.rawValue)".capitalized)
                    }
                    .tag(Day(weekday: dCase, schedule: .a) as Day?) //Types must match exactly
                    Group{
                        Text("B - ".capitalized) + Text("\(dCase.rawValue)".capitalized)
                    }
                    .tag(Day(weekday: dCase, schedule: .b) as Day?) //Types must match exactly
                }
            }
            
        }
    }
    
    enum Options{
        case list
        case selection
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文