Open PhotosPicker in NavigationSplitView from Detail

36 Views Asked by At

I would like to open PhotosPicker in NavigationSplitView from Detail, But I can not open. I am sharing my code here. Please guide me.

enter image description here


class SampleData {
    static let arraySampleFolder = [DetailProject(uniqueID: 1, projectName: "Project 1"),
                                    DetailProject(uniqueID: 2, projectName: "Project 2")
    ]
    
    static let arrayDetailFolder = [DetailProject(uniqueID: 1, projectName: "Detail 1"),
                                    DetailProject(uniqueID: 2, projectName: "Detail 2")
    ]
}


struct ProjectLibrary: View {
    @State private var visibility: NavigationSplitViewVisibility = .all
    @State private var selectedFolder: String?
    @State private var selectedItem: String?
    
    @State private var fullVisible: Bool = false
    
    
    
    @State private var selectedItems: [PhotosPickerItem] = []
    @State private var selectedPhotosData: [Data] = []
    @State private var arraySelectedPhotosAndVideosString: [Box] = []
    
    @State private var folders = [
        "Project 1": [
            "Video",
            "Photo",
            "Camera"
        ],
        "Project 2": [
            "Video",
            "Photo",
            "Camera"
        ]
    ]
    
    var body: some View {
        NavigationSplitView(columnVisibility: $visibility) {
            List(selection: $selectedFolder) {
                ForEach(Array(folders.keys.sorted()), id: \.self) { folder in
                    NavigationLink(value: folder) {
                        Text(verbatim: folder)
                    }
                }
            }
            .navigationTitle("Library")
        } content: {
            if let selectedFolder {
                List(selection: $selectedItem) {
                    ForEach(folders[selectedFolder, default: []], id: \.self) { item in
                        NavigationLink(value: item) {
                            Text(verbatim: item)
                        }
                    }
                }
                .navigationTitle(selectedFolder)
            } else {
                Text("Choose a folder from the sidebar")
            }
        } detail: {
            NavigationStack {
                ZStack {
                    if let selectedItem {
                        
                        NavigationLink(value: selectedItem) {
                            Text(verbatim: selectedItem)
                                .frame(alignment: .bottomTrailing)
                                .navigationTitle(selectedItem)
                          
                                .toolbar {
                                    
                                    PhotosPicker(selection: $selectedItems, maxSelectionCount: 5, matching: .any(of: [.images, .videos])) {
                                        Image(systemName: "photo.on.rectangle.angled")
                                    }
                                    
                                    .onChange(of: selectedItems) {
                                        
                                    }
                                                                        
                                    if(!fullVisible){
                                        Button("+") {
                                            
                                            visibility = .detailOnly
                                            fullVisible = true
                                        }
                                    }else{
                                        Button("-") {
                                            visibility = .all
                                            fullVisible = false
                                        }
                                    }
                                }
                        }
                    } else {
                        Text("Choose an item from the content")
                    }
                }
                .navigationDestination(for: String.self) { text in
                    
                    //Text(verbatim: text)
                    //if(selectedItem == "Video"){
                        
                        
                        
                    //}else if(selectedItem == "Video"){
                        
                   // }else{
                        
                   // }
                    
                    
                }
            }
        }
    }
}

0

There are 0 best solutions below