首页 > 解决方案 > 如何在 SwiftUI 中更改应用程序中的 JSON 文件?

问题描述

我一直在尝试在需要时打开两个不同的 json 文件。但是当我加载第一个然后重置并且老虎选择新的 JSON 时它不会在打开时更改它不会更改为新的 JSON 文件。我尝试使用绑定,但随后在预览结构中出现错误。verify是另一个绑定变量我有这就是为什么它在预览结构中。

基本上登录屏幕有一个选择器。用户选择他们想要的中心。一旦他们选择了一个中心,它就会第一次映射到所选的 JSON,但是一旦他们注销并选择第二个中心,它就不会将 JSON 文件更改为新的中心

import SwiftUI

var appName: String = "Work Tracker"
var centers = ["Center", "Center1", "Center2"]
var center = ""


struct LoginView: View {
    
    @State private var LoginChecker: Double = 0
    @State private var selectedCenter = ""
    
    let verticalPaddingForForm = 40.0
    var body: some View {
                
                VStack{
                    Button(action: {
                        
                        centerPicker()
                        print(selectedCenter)
                        print(center)

                        
                    }){
                        if LoginChecker == 0{
                            Text("Login")
                                .font(.system(size: 20))
                                .foregroundColor(Color.init("primaryText"))
                                .bold()
                                .frame(width: 120.0, height: 50.0)
                                .background(Color.init("primaryTextField"))
                                .cornerRadius(20)
                            
                            
                            
                            
                            
                            
                            
                        }else if LoginChecker == 1{
                            VStack(alignment: .center) {
                                
                                Text("Invalid Login. Please Try Again")
                                    .font(.system(size: 20))
                                    .padding()
                                    .foregroundColor(Color.init("primaryTextField"))
                                
                                Text("Login")
                                    .font(.system(size: 20))
                                    .foregroundColor(Color.init("primaryText"))
                                    .bold()
                                    .frame(width: 120.0, height: 50.0)
                                    .background(Color.init("primaryTextField"))
                                    .cornerRadius(20)
                                
                                
                                
                            }
                        }
                        
                        
                    }
                    .font(.system(size: 100))
                    .padding()
                    .animation(.easeOut(duration: 0.5))
                    
                }
                
                

                
                Section{
                
                Picker("Center:", selection: $selectedCenter) {
                    ForEach(centers, id: \.self) {
                        Text($0)
                    }.foregroundColor(Color.init("primaryTextField"))
                    
                }
                
                
                }
                .padding(.bottom, -100.0)
                .frame(width: 1.0, height: 1.0)
               // .foregroundColor(Color.init("primaryTextField"))
               // .background(Color.init("primaryTextField"))
                
               
                
                
                
                
            }.padding(.horizontal, CGFloat(verticalPaddingForForm))
        }
        
        
    };

struct LoginView_Previews: PreviewProvider {
        static var previews: some View {
            LoginView(verify: .constant(false))
            //      .previewLayout(.fixed(width: 1700, height: 1100))
            
        }
    }

    func centerPicker(){
        if selectedCenter == "Center1"{
            center = "Center1.json"
            appName = "Center1"
        }else if selectedCenter == "Center2"{
            center = "Center2.json"
            appName = "Center2"
        }
    }

标签: iosswiftxcodeswiftui

解决方案


推荐阅读