E40a3c7bfdb6e88737fb2862794246fa
SwiftUI 成绩管理项目源码之学校成绩允许计算每个单元和学期平均值的工具

实战需求

SwiftUI 成绩管理项目源码之学校成绩允许计算每个单元和学期平均值的工具

本文价值与收获

看完本文后,您将能够作出下面的界面

SwiftUI 成绩管理项目源码之学校成绩允许计算每个单元和学期平均值的工具

SwiftUI 成绩管理项目源码之学校成绩允许计算每个单元和学期平均值的工具

SwiftUI 成绩管理项目源码之学校成绩允许计算每个单元和学期平均值的工具

SwiftUI 成绩管理项目源码之学校成绩允许计算每个单元和学期平均值的工具

看完本文您将掌握的技能

  • 设置LaunchScreen登录界面
  • 科目管理添加
  • 分数添加与删除
  • 自动计算平均分
  • 筛选内容与排序

实战代码

1、主界面

import SwiftUI

struct ContentView: View {
  @Environment(\.colorScheme) var colorScheme: ColorScheme

  @EnvironmentObject var allSubjects: SubjectStore
  @State var showNewSubjectSheet = false

  var body: some View {
    NavigationView {

      if allSubjects.subjects.isEmpty {
        NoSubjectView(showSheet: $showNewSubjectSheet)
          .padding(.horizontal, 15)
          .modifier(ContentViewNavigationModifier(displaySheet: $showNewSubjectSheet))
      } else {
        ZStack(alignment: .bottomTrailing) {
          ShowSubjectsView()
            .environmentObject(allSubjects)
            .modifier(ContentViewNavigationModifier(displaySheet: $showNewSubjectSheet))

          ButtonCircle {
            let feedbackGenerator = UISelectionFeedbackGenerator()
            feedbackGenerator.selectionChanged()
            showNewSubjectSheet.toggle()
          }
        }
      }

    }
    .sheet(isPresented: $showNewSubjectSheet) {
      NewSubjectView().environmentObject(self.allSubjects)
    }

  }
}

struct ContentViewNavigationModifier: ViewModifier {
  @Binding var displaySheet: Bool

  func body(content: Content) -> some View {
    content
      .navigationBarTitle(
        Text("My Subjects")
      )
  }
}

struct ContentView_Previews: PreviewProvider {
  static var previews: some View {
    let store = SubjectStore()
    store.subjects.append(Subject(name: "Test", color: .orange, coefficient: 1, tag: 1))

    return ContentView()
      .environmentObject(store)
  }
}

2、科目管理
```
import SwiftUI

top Created with Sketch.