为什么在模拟器或设备上赢了列表
我已经在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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论