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:

Code Block
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)
            }
        }
    }
}


.

Put a .navigationTitle() modifier with the title of the file on the VStack inside of the NavigationView in your ts view.

Code Block
NavigationView {
    VStack {
// Your text views
    }.navigationTitle(name)
}


Display filename in next View too
 
 
Q