Post

Replies

Boosts

Views

Activity

Reply to Unable to create list of string from json response
@OOPer the "currentFrResponse" is an object of struct pasted below: struct CurrentFrResponse: Codable {     var frId : String?     var clientFrId : String?     var customerRefId : String?     var requestorName : String?     var requestorContactNo : String?     var location : Location?     var building : Building?     var division : Division?     var locationDesc : String?     var faultCategory : Division?     var priority : Division?     var department : Division?     var maintGrp : Division?     var remarks : [String]?     var purchaseOrder : String?     var attendedBy : [AttendedBy]? } I have removed some properties from this struct to make it simple.
Mar ’21
Reply to Unable to create list of string from json response
In the end i used a ForEach loop for this. I actually wished to create a list of textfields which could be add on the basis of the remarks received from the API call. Also this list needed to be dynamic, i.e, I could add or remove the textfields dynamically by using buttons which is why I wanted to add a list... Unfortunately I couldn't. But now I created a a for loop and then added two buttons which could add or remove the textfields and it now works perfectly. Here is the code for this. } if showUpdateButton { HStack{ Button(action:{ self.remarksList.append("") }) { Text("Add Remarks") } Spacer() Button(action:{ _ = self.remarksList.popLast() }) { Text("Delete Remarks") } }.padding(30) }
Apr ’21
Reply to Get data from view after it gets added on screen using ForEach
Below is the code that I have currently struct CheckListCard: View {       @Binding var checkListData : ChecklistModel   @State var statusList: [String] = []   @State var currentStatus : String = ""   @State var currentRemark: String = ""   @Binding var enableButtonBool: Bool       var body: some View {     VStack{       Text("Description").padding()         .onAppear(){           addData()         }       if checkListData.description != nil{         Text(checkListData.description!)           .padding()       }       Text("Status").padding()       if checkListData.status != nil {         Picker("Status", selection: $currentStatus ) {           ForEach(GeneralMethods().uniqueElementsFrom(array: statusList), id: \.self){ status in             Text(status)           }         }.pickerStyle(SegmentedPickerStyle())         .padding()         .disabled(!enableButtonBool)                 }       Text("Remarks")       if checkListData.remarks != nil{         TextField("Remarks", text: $currentRemark)           .disabled(!enableButtonBool)           .padding()           .background(Color(.white))           .cornerRadius(8)           .accentColor(.gray)                   }else{         TextField("Remarks", text: $currentRemark)           .disabled(!enableButtonBool)           .padding()           .background(Color(.white))           .cornerRadius(8)                   }     } struct CheckListSheet: View {       @State var taskId: Int   @State var pmTaskResponse : PmTaskResponse   @State var checklistResponse: [ChecklistModel] = [ChecklistModel()]   @State var enableButtonBool: Bool = false   var body: some View {           Text("Checklist Items")       .padding()       .font(.title)           ScrollView{               ForEach(checklistResponse, id:\.self){ checklist in         CheckListCard(checkListData: Binding(get: {           return checklist         }, set: { (newValue) in           checklistResponse.append(newValue)         }) , enableButtonBool: $enableButtonBool)       }       if enableButtonBool{         Button("Update"){           updateCheckList()         }.buttonStyle(MainButton())       }     }     .onAppear(){       getChecklists()     }         }
May ’21