Post

Replies

Boosts

Views

Activity

Arrays with Dates
Hi, I' programming an app, where I want to see "Transactions". They are saved in Firestore and have a Date, an User and money. I want a list, where the users are sorted in sections by the date. Like: 21/3/2020 User1 11:08 AM User3 11:07 AM User2 10:08 AM Is it possible to do that?
1
0
1k
Jan ’21
onDisappear() and onAppear()
Hi, In my SwiftUI app, I have a settings and a content view. I use UserDefaults to save the settings and I user onDisappear() to save it in the UserDefaults. In the content View, I use onAppear() to look for the settings, and if I print both out, the onAppear() function get called in front of the onDisappear() function. Why? Can you help me?
1
0
496
Dec ’20
Update a view by doing something in another view
Hi, In my code, I have a value which counts calls from Navigation Links. This works fine but I want that if this count is over 1, the ContentView updates and add a cell. At the moment, I have to restart the app and then I have the new cell, but I want, that it updates directly. Is this possible? This is my code: struct Website : Identifiable, Hashable, Comparable{   static func < (lhs: Website, rhs: Website) -> Bool {     lhs.name < rhs.name   }           var id = UUID()   var url : String   var name : String   var image : String   var calls : Int     } struct websiteCallsCell : View{   var website : Website   @State var press = false   @State var tap = false   @State var isPresented = false       var body: some View{     NavigationLink(destination: WebView(website: website, url: URL(string: website.url)), label: {       Text(website.name)         .font(.system(size: 20, weight: .semibold, design: .rounded))         .frame(width: UIScreen.main.bounds.width*0.85, height: 60)         .background(           ZStack {             Color(press ? colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) : colorLiteral(red: 0.7608050108, green: 0.8164883852, blue: 0.9259157777, alpha: 1))                           RoundedRectangle(cornerRadius: 16, style: .continuous)               .foregroundColor(Color(press ? colorLiteral(red: 0.7608050108, green: 0.8164883852, blue: 0.9259157777, alpha: 1) : colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)))               .blur(radius: 4)               .offset(x: -8, y: -8)                           RoundedRectangle(cornerRadius: 16, style: .continuous)               .fill(                 LinearGradient(gradient: Gradient(colors: [Color( colorLiteral(red: 0.9019607843, green: 0.9294117647, blue: 0.9882352941, alpha: 1)), Color.white]), startPoint: .topLeading, endPoint: .bottomTrailing)             )               .padding(2)               .blur(radius: 2)           }       )         .clipShape(RoundedRectangle(cornerRadius: 16, style: .continuous))         .overlay(           HStack {             AnimatedImage(url: URL(string: website.image))               .font(.system(size: 24, weight: .light))               .foregroundColor(Color.white.opacity(press ? 0 : 1))               .frame(width: press ? 220 : 54, height: press ? 4 : 50)               .background(Color( colorLiteral(red: 0.3647058904, green: 0.06666667014, blue: 0.9686274529, alpha: 1)))               .clipShape(RoundedRectangle(cornerRadius: 16, style: .continuous))               .shadow(color: Color( colorLiteral(red: 0.3647058904, green: 0.06666667014, blue: 0.9686274529, alpha: 1)).opacity(0.3), radius: 10, x: 10, y: 10)               .offset(x: press ? 70 : -10, y: press ? 16 : 0)                           Spacer()           }       )         .shadow(color: Color(press ? colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) : colorLiteral(red: 0.7608050108, green: 0.8164883852, blue: 0.9259157777, alpha: 1)), radius: 20, x: 20, y: 20)         .shadow(color: Color(press ? colorLiteral(red: 0.7608050108, green: 0.8164883852, blue: 0.9259157777, alpha: 1) : colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)), radius: 20, x: -20, y: -20)         .scaleEffect(tap ? 1.2 : 1)     })                                                       }     } List{           ForEach(websites){ website in             if UserDefaults.standard.integer(forKey: "calls\(website.name)") > 0 && (UserDefaults.standard.integer(forKey: "lastCallsCount") < 8) {               VStack{               websiteCallsCell(website: website)                 lineSpacing(20)                 Spacer(minLength: 5)               }             }           }                   }
0
0
289
Dec ’20
Filter array by String
Hi, In the following code, I filter an array, but it only works with the first letter of the name. For Example, when I write "A" in the TextField, the filter shows me "Apple". But if I write "Ap", the filter shows me nothing. Can you help me? List{               ForEach(groupedArray.keys.sorted().filter{         text.isEmpty || $0.contains(text)       }, id: \.self){key in         Section(header: Text(key)) {           ForEach(groupedArray[key]!, id: \.self){website in             NavigationLink(               destination: WebView(website: website, url: URL(string: website.url)),               label: {                 Text(website.name)                 Spacer()                 if website.image != ""{                   RemoteImage(url: website.image).frame(width: 25, height: 25, alignment: .center)                                     }else{                   Loader()                 }               })           }         }       }     }
6
0
1.5k
Dec ’20
ImagePicker in SwiftUI
Hi, I have a problem with the following code: struct AddView: View {   @State var text:String = ""   @State private var image1 : String?   @State private var showingPicker = false   @Binding var listItems: [Item]   @State private var inputImage : String?   var body: some View {           VStack{       TextField("Name", text: $text).padding().background(Color(.systemGray5)).frame(width: 400,alignment: .center).cornerRadius(20)                 Image(systemName: "person.circle")                   .frame(width: 170, height: 170, alignment: .center)         .clipShape(Circle())         .shadow(radius: 10)         .overlay(Circle()         .stroke(Color.blue))         .position(x: 209, y: 100)         .onTapGesture {           self.showingPicker = true                                   }.sheet(isPresented: $showingPicker, onDismiss: loadImage){           ImagePicker(image: self.$inputImage)                     }                                                           Button(action: {         listItems.append(Item(name: text, image: "Gif"))         UserDefaults.standard.saveItems(listItems)         print(listItems)                                              }, label: {         Text("Add")       })     }   }   func loadImage(){     guard let inputImage1 = inputImage else {       print(inputImage)       return     }   } } extension UserDefaults {   func saveItems(_ items: [Item]) {     let encoder = JSONEncoder()     if let data = try? encoder.encode(items) {       set(data, forKey: "Items")     }   } } struct ImagePicker : UIViewControllerRepresentable{       class Coordinator : NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate{     let parent : ImagePicker     init(_ parent: ImagePicker){       self.parent = parent     }           func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey : String]){       if let uiImage = info[.originalImage]{         parent.image = uiImage               }       parent.presentaitionMode.wrappedValue.dismiss()     }   }       @Environment(\.presentationMode) var presentaitionMode   @Binding var image : String?       func makeCoordinator() -> Coordinator {     Coordinator(self)   }               func makeUIViewController(context: UIViewControllerRepresentableContext<ImagePicker>) -> UIImagePickerController{     let picker = UIImagePickerController()     picker.delegate = context.coordinator     return picker   }   func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<ImagePicker>) {         } } When I print out the inputImage, it says it is nil. Why is it like this? Can you help me please?
15
0
3k
Nov ’20
UIImage in SwiftUI
Hi, I have a problem with the following code: struct AddView: View {   @State var text:String = ""   @State private var image : UIImage?   @State private var showingPicker = false   @Binding var listItems: [Item]   @State private var inputImage : UIImage?   var body: some View {           VStack{       TextField("Name", text: $text).padding().background(Color(.systemGray5)).frame(width: 400,alignment: .center).cornerRadius(20)       Image(systemName: "person.circle")         .frame(width: 170, height: 170, alignment: .center)         .clipShape(Circle())         .shadow(radius: 10)         .overlay(Circle()         .stroke(Color.blue))         .position(x: 209, y: 100)         .onTapGesture {           self.showingPicker = true                       }.sheet(isPresented: $showingPicker, onDismiss: loadImage){           ImagePicker(image: self.$inputImage)         }                       Button(action: {         listItems.append(Item(name: text, image: inputImage))         UserDefaults.standard.saveItems(listItems)         print(listItems)                                              }, label: {         Text("Add")       })     }   }   func loadImage(){     guard let inputImage1 = inputImage else {       image = inputImage       return     }   } } extension UserDefaults {   func saveItems(_ items: [Item]) {     let encoder = JSONEncoder()     if let data = try? encoder.encode(items) {       set(data, forKey: "Items")     }   } } struct ImagePicker : UIViewControllerRepresentable{       class Coordinator : NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate{     let parent : ImagePicker     init(_ parent: ImagePicker){       self.parent = parent     }           func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey : Any]){       if let uiImage = info[.originalImage] as? UIImage{         parent.image = uiImage       }       parent.presentaitionMode.wrappedValue.dismiss()     }   }       @Environment(\.presentationMode) var presentaitionMode   @Binding var image : UIImage?       func makeCoordinator() -> Coordinator {     Coordinator(self)   }               func makeUIViewController(context: UIViewControllerRepresentableContext<ImagePicker>) -> UIImagePickerController{     let picker = UIImagePickerController()     picker.delegate = context.coordinator     return picker   }   func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<ImagePicker>) {         } } struct Item : Identifiable, Codable{   var id = UUID()   var name : String   var image : String     } When I want to append an Image to the listItems, I get the following Error: Cannot convert value of type 'UIImage?' to expected argument type 'String' I don't know what I can do to change it, because when I change the Type of image in Item to UIImage, I get these errors: Type 'Item' does not conform to protocol 'Decodable' Type 'Item' does not conform to protocol 'Identifiable' What can I do?
1
0
1.3k
Nov ’20
Append things to Array at launching
Hi have a question to the following code: struct ContentView: View {             @State private var listItems = [Item]()   let savedItems = UserDefaults.standard.string(forKey: "Items") ?? "error"   var body: some View {     NavigationView{                                     List{           ForEach(listItems){ item in             Text(item.name)                                           }           NavigationLink(             destination: AddView(listItems: $listItems),             label: {               Text("                 Add")                 .foregroundColor(.blue)             })         }                                                           .navigationBarTitle("MyApp")     }         } } struct AddView: View {   @State var text:String = ""   @Binding var listItems: [Item]   var body: some View {           VStack{       TextField("Name", text: $text).padding().background(Color(.systemGray5)).frame(width: 400,alignment: .center).cornerRadius(20)                               Button(action: {         listItems.append(Item(name: text, image: "Gif"))         print(listItems)         UserDefaults.standard.set(listItems, forKey: "Items")                           }, label: {         Text("Add")       })     }   } } If i append something in the AddView, i want to save it in the UserDefaults and append it automatically when the app starts. But I don't know how to do this. Can you help me ? PS: I'm using AppDelegate and SceneDelegate.
1
0
308
Nov ’20
Update per Frame Swift UI
Hi, i've a problem with the following code: import SwiftUI struct ContentView: View {             static var listItems = [Item]()       var body: some View {     NavigationView{                 List{           ForEach(ContentView.listItems){ item in             Text(item.name)                                           }           NavigationLink(             destination: AddView(),             label: {               Text("                 Add")                 .foregroundColor(.blue)             })         }                       .navigationBarTitle("MyApp")     }         } } struct Item : Identifiable{   var id = UUID()   var name : String   var image : String     } struct ContentView_Previews: PreviewProvider {   static var previews: some View {     ContentView()   } } When I klick on a Button in my List, I go to another view: import SwiftUI struct AddView: View {   @State var text:String = ""   var body: some View {           VStack{       TextField("Name", text: $text).padding().background(Color(.systemGray5)).frame(width: 400,alignment: .center).cornerRadius(20)                               Button(action: {         ContentView.listItems.append(Item(name: text, image: "Gif"))         print(ContentView.listItems)                                     }, label: {         Text("Add")       })     }   } } struct AddView_Previews: PreviewProvider {   static var previews: some View {     AddView()   } } But when I klick on add in the AddView() and I go back to the First View nothing i changing. Can you help me please?
2
0
1.3k
Nov ’20
Access a variable in another script from one script
Hello, I have just started programming with Swift and I have a little question. I reprogrammed a quiz app from a tutorial and now have the following problem: I have a main screen and a result screen. The score is counted in the first view controller and now I need this score in the second view controller. How can I access the variable in the first from the second controller? Thank you!
0
0
202
Jul ’20