רכיב מתקדם של רשימת מקומות
הרכיב 'רשימת מקומות מתקדמת' מאפשר לכם להגדיר ולהציג רשימה של מקומות. אפשר לציין עד 20 מקומות מאותו סט של זהויות שנתמכות על ידי רכיב פרטי המקום (מזהי מקומות, שמות משאבים של מקומות או קואורדינטות של קו רוחב וקו אורך).
אפשר לבחור בין תצוגה של רשימה אופקית או אנכית. כברירת מחדל, הכיוון שבו יוצג השידור במסך הוא אנכי. אותו מידע ואותן אפשרויות הגדרה שזמינים בכרטיסים של פרטי מקום מלאים וקומפקטיים זמינים לכל פריט ברשימה.
משתמשים בפרמטריםorientation, placeIdentifiers ו-configuration של AdvancedPlaceListView כדי ליצור רשימה. פרטים נוספים מופיעים בדוגמה.
חיוב
אתם מחויבים על כל בקשה לרשימה, וכל שינוי ברשימה הוא אירוע חדש לחיוב.
דוגמה
בדוגמה הזו נוצרת רשימה שמבוססת על מזהי מקומות. הפרמטר configuration מציין שכל פריט ברשימה יכלול את הכתובת, הדירוג והסוג, יחד עם מפרטים חזותיים אחרים. נוצרת פעולה ראשית שמאפשרת למשתמש להוסיף כל פריט ברשימה למועדפים או להסיר אותו מהמועדפים. הפעולות בפינה מושבתות לכל פריט ברשימה.
Swift
struct AdvancedPlaceListDemoView: View { private let configuration = AdvancedPlaceListConfiguration( content: [.address(), .rating(), .type()], preferTruncation: true, theme: PlacesMaterialTheme(), attributionPosition: .bottom, mediaSize = .medium, selectable: true ) @State private var placeIdentifiers = [.placeID("ChIJj61dQgK6j4AR4GeTYWZsKWw")] @State private var favoritePlaces: Set<String> = [] var body: some View { AdvancedPlaceListView( orientation: .horizontal, // default is vertical placeIdentifiers: placeIdentifiers, configuration: configuration ) .onLoad { results in for result in results { switch result { case .success(let place) print("place: \(place)") case .failure(let error) print("error: \(error)") } } } .onPlaceSelected { place, index in print("place: \(place)") print("index: \(index)") } .mainActions { place in var actions: [MainPlaceActionElement] = [] let placeID = place.placeID! if self.favoritePlaces.contains(placeID) { actions.append( .action( MainPlaceAction( image: Image(systemName: "heart.fill"), label: "Unfavorite" ) { _ in self.toggleFavorite(placeID) } ) ) } else { actions.append( .action( MainPlaceAction( image: Image(systemName: "heart"), label: "Favorite" ) { _ in self.toggleFavorite(placeID) } ) ) } actions.append(.actionId(.openMap(style: .primary))) return actions } // Ensures that there are no corner actions. .cornerActions { _ in return [] } } func toggleFavorite(_ placeID: String) { if favoritePlaces.contains(placeID) { favoritePlaces.remove(placeID) } else { favoritePlaces.insert(placeID) } } }