Когда я использовал опубликованную переменную, я не вижу свои календарные дни (SWIFTUI)

Это странно, и я действительно не знаю, ошибаюсь ли я, пытаясь выйти из моего приложения, используя опубликованную переменную... В основном я создал MotherView(), где приложение запускается и когда я нажимаю кнопку. Я мог бы также изменить значение на "Выход", я удаляю свой токен, чтобы перестать делать запросы к моему API... Все работает нормально, НО если я сделаю это, я не смогу увидеть текущий день в моем календаре. Но если я сначала запустил CalendarView(), он отлично работает... Я не знаю, как выйти, не повлияв на мой CalendarView()

Это то, что я хочу сделатьhttps://youtu.be/Fea0l7O5jtY

Вот мой код

CalendarView

импортировать SwiftUI

struct CalendarView: View {

    let formatView = DateFormatter()
    @State private var multipleIsPresented = true
    @EnvironmentObject var fechaActual: PageSettings
    var Appointments = [

        Appointment(titleVisit: "Visita General",  idVisit: 1, typeVisit: "Supervición", startDate: "2020-03-06T13:00", endDate: "2020-03-06T14:00", description: "Visita de Narciso", place: "Forte", userVisited: "Antonio Labra", statusVisitId: 1, statusVisit: "Anotado", imageProfile: "Vato1", jobPosition: "iOS Developer Intern", company: "Forte", visits: [], requeriments: []),
        Appointment(titleVisit: "Visita RH", idVisit: 2, typeVisit: "Administrativa", startDate: "2020-03-06T13:00", endDate: "2020-03-06T14:00", description: "Visita de Narciso", place: "Forte", userVisited: "Antonio Labra", statusVisitId: 1, statusVisit: "Anotado", imageProfile: "Vato1", jobPosition: "iOS Developer Intern", company: "Forte", visits: [], requeriments: []),
        Appointment(titleVisit: "Visita Mantenimiento", idVisit: 3, typeVisit: "Mantenimiento", startDate: "2020-03-08T13:00", endDate: "2020-03-07T14:00", description: "Visita de Antonio", place: "Forte", userVisited: "Narciso Meza", statusVisitId: 1, statusVisit: "Anotado", imageProfile: "Vato2", jobPosition: "iOS Developer Intern", company: "Forte", visits: [], requeriments: [])
    ]
    var rkManager = RKManager(calendar: Calendar.current, minimumDate: Date(), maximumDate: Date().addingTimeInterval(60*60*24*365/2), mode: 0, typeVisit: nil)
    init(){
        formatView.dateFormat = "d MMM y"
    }
    var body: some View {
        VStack{
            VStack{
                RKViewController(isPresented: self.$multipleIsPresented, rkManager: self.rkManager)
                datesView(dates: self.rkManager.selectedDates)
            }
            .frame(height: UIScreen.main.bounds.height*0.3)
            .padding(16)
            HStack{
                Button(action:{
                    self.fechaActual.todaysDate = dayChange(daysToAdd: -1, todaysDate: self.fechaActual.todaysDate)
                    dateShown(date: self.fechaActual.todaysDate, rkManager: self.rkManager)
                }){
                    Image("Arrow")
                        .resizable()
                        .frame(width: UIScreen.main.bounds.height*0.03, height: UIScreen.main.bounds.height*0.03)
                }
                Text(formatView.string(from: self.fechaActual.todaysDate))
                Button(action:{
                    self.fechaActual.todaysDate = dayChange(daysToAdd: 1, todaysDate: self.fechaActual.todaysDate)
                    dateShown(date: self.fechaActual.todaysDate, rkManager: self.rkManager)
                }){
                    Image("Arrow")
                        .resizable()
                        .rotationEffect(.degrees(180))
                        .frame(width: UIScreen.main.bounds.height*0.03, height: UIScreen.main.bounds.height*0.03)
                }
            }
            ScrollView(.vertical, showsIndicators: true){
                ForEach(Appointments, id: \.self){Invi in
                    ZStack{
                        RoundedRectangle(cornerRadius: 8)
                            .foregroundColor(.white)
                            .shadow(radius: 2, y: 2)
                            .frame(width: UIScreen.main.bounds.width*0.95, height: UIScreen.main.bounds.width*0.12)
                        Button(action:{}){
                            HStack{
                                Circle()
                                    .stroke(circleColor(statusVisit: Invi.typeVisit), lineWidth:3)
                                    .frame(width: UIScreen.main.bounds.width*0.06, height: UIScreen.main.bounds.width*0.06)
                                    .padding(.trailing, 8)
                                Text(Invi.titleVisit)
                                    .frame(width: UIScreen.main.bounds.width*0.4, alignment: .center)
                                Text(Invi.typeVisit)
                                    .frame(width: UIScreen.main.bounds.width*0.3, alignment: .center)

                            }
                            .frame(width: UIScreen.main.bounds.width*0.8)
                        }.accentColor(Color.black)
                    }
                    .onAppear(){

                    }
                }
            }
        }
    }
}

struct CalendarView_Previews: PreviewProvider {
    static var previews: some View {
        CalendarView()
    }
}

MainView

import SwiftUI
import Combine

struct MainView: View {

    @EnvironmentObject var pageSettings: PageSettings
    @State var isNavigationBarHidden: Bool = true
    @State var showActionSheet: Bool = false

    let defaults = UserDefaults.standard
    let img = Constants.Development.mediaURL + UserDefaults.standard.string(forKey: "profileImage")!
    let colors = CustomColor().colors

    init(){
        UITabBar.appearance().backgroundColor = colors["Purple"]?.uiColor()
    }
    var body: some View {

        ZStack{
            VStack{
                ZStack{
                    colors["LightGray"].edgesIgnoringSafeArea(.all)
                    HStack(alignment: .center, spacing: UIScreen.main.bounds.width * 0.15){
                        Text("goodMorning").foregroundColor(colors["Gray"]).bold()
                        Spacer().frame(width:UIScreen.main.bounds.width * 0.05)

                        ImageView(withURL: img , widthValue: 45, heightValue: 45)
                            .aspectRatio(contentMode: .fit)
                            .clipShape(Circle())
                            .onTapGesture {
                                let alertHostingController = UIHostingController(rootView: SettingsView())

                                alertHostingController.modalPresentationStyle = UIModalPresentationStyle.fullScreen

                                UIApplication.shared.windows[0].rootViewController?.present(alertHostingController, animated: false)
                        }

                        .onLongPressGesture {
                            self.showActionSheet = true
                        }.actionSheet(isPresented: $showActionSheet){
                            ActionSheet(title: Text("messageOptions"), buttons:[
                                .default(Text("logOut".localized)){
                                    self.defaults.set(nil, forKey: "token")
                                    self.pageSettings.currentPage = "login"
                                },
                                .cancel()
                            ])
                        }

                    }

                }
                .frame(height:UIScreen.main.bounds.height * 0.08).clipped().shadow(radius: 2, x: 0, y: 0)


                TabView{
                    ScheduleView().tabItem{
                        Image("Book")
                        Text("book").tag(0)

                    }
                    CalendarView().tabItem{
                        Image("CalendarToday")

                        Text("calendarToday").tag(1)
                    }

                    DirectoryView().tabItem{
                        Image("Contacts")
                        Text("contacts").tag(2)
                    }
                    InvitationView().tabItem{
                        Image("Email")
                        Text("invitations").tag(3)
                    }

                    InventoryView().tabItem{
                        Image("Inbox")
                        Text("inventory").tag(4)
                    }
                }
            }
        }
    }
}


struct MainView_Previews: PreviewProvider {
    static var previews: some View {
        MainView()
    }
}

MotherView

import SwiftUI
import Firebase

struct MotherView: View {

    @EnvironmentObject var pageSettings: PageSettings
    var body: some View {

        VStack {
            if pageSettings.currentPage == "splash"{
                SplashView()
            }else{
                if self.validateLogin(){
                    MainView()
                }else{
                    LoginView()
                }
            }
        }
    }

    func validateLogin()->Bool{
        let defaults = UserDefaults.standard
        let token =  defaults.string(forKey: "token")

        if token != nil {
            return true
        }else{
            return false
        }


    }
}


struct MotherView_Previews : PreviewProvider {
    static var previews: some View {
        MotherView()
    }
}

class PageSettings: ObservableObject {
    @Published var currentPage = "splash"
    @Published var systemVersion = UIDevice.current.systemVersion
    @Published var imei = UIDevice.current.identifierForVendor
    @Published var currentUser = Auth.auth().currentUser
    @Published var todaysDate = Date()

}

PS. Думаю, я использую @EnvironmentObjects в обоих представлениях... Но я не знаю, как это исправить!:c

0 ответов

Другие вопросы по тегам