Post

Replies

Boosts

Views

Activity

Display filename in next View too
Hello, I have a code that makes a http Request, gets an array with filenames from that, displays them each with an image and the filename below. Everything works fine. Now I made each image a button that opens a detail page. That works but at the top it should say the matching filename from the page before. But I am not able to hand over the filename (name) from ContentView4 to the next page (ts). Could you please help me? Thanks Nikias Here is my code: import SwiftUI struct ContentView4: View {          @State var showingDetail = false          @State var username: String = "."     @State var password: String = "."          @State private var name = String("Nikias2")          @State private var t = String()     @State var dateien = ["word.png", "vi.png", "text.png", "pp.png", "pdf.png", "ordner.png", "ex.png", "datei.png", "bild.png"]          var body: some View {         ScrollView(.vertical) {         ZStack{             VStack {                 ForEach(0 ..< dateien.count, id: \.self) {                     Button(action: {                         print("button pressed")                         t = dateien[1]                         self.showingDetail.toggle()                     }) {                     Image("datei")                     }                         .scaledToFit()                         .padding(0)                     Text(self.dateien[$0])                     Text(t)                         .foregroundColor(.white)             }             }         }         .sheet(isPresented:                 $showingDetail) {             ts(name: t)                 }         .onAppear { //This `onAppear` is added to `ZStack{...}`             doHttpRequest()         }     }     }       func doHttpRequest() {             let myUrl = URL(string: "http://192.168.1.180/int.php")! //Trailing semicolon is not needed             var request = URLRequest(url: myUrl)             request.httpMethod = "POST"// Compose a query string             let postString = "Name=\($username)&Passwort=\($password)"                          request.httpBody = postString.data(using: .utf8)                          let task = URLSession.shared.dataTask(with: request) {                 (data, response, error) in                                  //Use if-let when you want to use the unwrapped value                 if let error = error {                     print("error=\(error)")                     return                 }                                  //Use guard-let when nil has no meaning and want to exit on nil                 guard let response = response else {                     print("Unexpected nil response")                     return                 }                 // You can print out response object                 print("response = \(response)")                                  //Let's convert response sent from a server side script to a NSDictionary object:                 do {                     //Use guard-let when nil has no meaning and want to exit on nil                     guard let data = data else {                         print("Unexpected nil data")                         return                     }                     //#1 `mutableContainer` has no meaning in Swift                     //#2 Use Swift Dictionary type instead of `NSDictionary`                     let json = try JSONSerialization.jsonObject(with: data) as? [String: Any]                                          if let parseJSON = json {                         // Now we can access value of First Name by its key                         //Use if-let when you want to use the unwrapped value                         if let firstNameValue = parseJSON["Name"] as? String {                             print("firstNameValue: \(firstNameValue)")                             let dateien =  firstNameValue.components(separatedBy: ",")                             print(dateien)                                                          self.dateien = dateien                         }                     }                 } catch {                     print(error)                 }             }             task.resume()     } } struct TestView_Previews: PreviewProvider {     static var previews: some View {         ContentView4()     } } struct ts: View {     var name: String          var body: some View {         NavigationView {         VStack {             Text(name)                 .font(.system(size: 60))                 .foregroundColor(.black)                 .padding(50)             Text("+")                 .font(.headline)                 .foregroundColor(.white)                 .padding()                 .frame(width: 220, height: 60)                 .background(Color.yellow)                 .cornerRadius(35.0)             Text("Datei herunterladen")                 .font(.headline)                 .foregroundColor(.white)                 .padding()                 .frame(width: 220, height: 60)                 .background(Color.blue)                 .cornerRadius(35.0)             Text("Datei umbenennen")                 .font(.headline)                 .foregroundColor(.white)                 .padding()                 .frame(width: 220, height: 60)                 .background(Color.green)                 .cornerRadius(35.0)             Text("Datei löschen")                 .font(.headline)                 .foregroundColor(.white)                 .padding()                 .frame(width: 220, height: 60)                 .background(Color.red)                 .cornerRadius(35.0)             }         }     } }
2
0
386
Jan ’21
Question: Swiftui http request without button
Hello guys, I´m new to the forum and have a question concerning a http request which should be established without a button clicked. Basically I would like to have everything inside the button´s action tag done automatically without a button clicked. Thanks in advance. Nikias Here is my code from the ts.view : import SwiftUI struct ContentView: View {          @State var username: String = "..."     @State var password: String = "..."          var body: some View {                      ZStack {                 VStack {                                              Button(action: {                         if 1==1 {                             let myUrl = URL(string: "                                                                var request = URLRequest(url:myUrl!)                                                                request.httpMethod = "POST"// Compose a query string                                                                let postString = "Name=\($username)&Passwort=\($password)";                                                                request.httpBody = postString.data(using: String.Encoding.utf8);                                                                let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in                                                                        if error != nil                                    {                                        print("error=\(error)")                                        return                                    }                                                                        // You can print out response object                                    print("response = \(response)")                                                               //Let's convert response sent from a server side script to a NSDictionary object:                                    do {                                        let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary                                                                                if let parseJSON = json {                                                                                        // Now we can access value of First Name by its key                                            let firstNameValue = parseJSON["Name"] as? String                                            print("firstNameValue: \(firstNameValue)")                                         let dateien =  firstNameValue?.components(separatedBy: ",")                                          print(dateien)                                                                          }                                    } catch {                                        print(error)                                    }                                    }                                    task.resume()                         }                     }) {                         LoginButtonContent()                     }             }         }              } } struct TestView_Previews: PreviewProvider {     static var previews: some View {         ContentView()     } } I had to remove the URL.
19
0
3.7k
Jan ’21