A simple iOS app demonstrating SwiftUI basics, navigation, and state-driven interactivity using Apple’s tutorials:
-
Part 1: 🧩 SwiftUI Essentials – Creating and Combining Views
-
🗺️ Built the
LandmarkDetailview with:- 🗺️
MapView - 🖼️
CircleImage - 📐 Stacks (
VStack,HStack) for layout - ⚡ Live previews in Xcode
- 🗺️
-
-
Part 2: 📋 Building Lists and Navigation
- ➕ Created
LandmarkRowto display a landmark’s image & name in a row - 📜 Built
LandmarkListusingListto dynamically display all landmarks - 🆔 Made
Landmarkconform toIdentifiablefor use inList - 🔗 Used
NavigationView+NavigationLinkto enable navigation from the list to detail views - ✅ Now users can browse a list of landmarks and tap to see details
- ➕ Created
-
Part 3: 🎛️ Handling User Input
- 📌 Introduced state management with the
@Stateproperty wrapper - ⭐ Added a Favorite Button (toggle with a star icon) to mark landmarks as favorites
- 🖱️ Connected button state to the landmark model, so UI updates automatically when toggled
- 📲 Updated
LandmarkListto visually show favorite landmarks with a filled star - 🎯 Reinforced SwiftUI’s declarative pattern: views react to changes in state automatically
- 📌 Introduced state management with the
-
Part 4: 🧩 Composing Complex Interfaces
- 🗂️ Integrated multiple views (
LandmarkList,LandmarkDetail,FavoriteButton) into a more cohesive structure - 🌐 Shared data across views by introducing
ObservableObjectand@EnvironmentObjectfor centralized state - 📦 Modeled app data in
ModelDatato hold landmarks and allow consistent updates throughout the app - 🔄 Ensured any change in data (like marking favorites) automatically propagates across all screens
- 📱 Built a more scalable app foundation, preparing for larger SwiftUI architectures
- 🗂️ Integrated multiple views (
- 📍 Detail View: Shows map, circular image, and landmark info with declarative SwiftUI.
- 📋 Dynamic List View: Automatically generates rows from data.
- 🧭 Navigation Flow: Seamless transitions from list ➝ detail using SwiftUI navigation components.
- ⭐ Favorites: Mark and filter landmarks interactively with state-driven UI updates.
- 🌐 Shared State: Centralized
ModelDataensures consistency across all parts of the app.
- ⬇️ Clone the project.
- 💻 Open in Xcode 15+.
- 📱 Run on a simulator (e.g. iPhone 15).
- 🔍 Explore how the list integrates with the detail views.
- 🎨 Try toggling favorites and see the state update instantly.
Consider exploring:
- 🧭 Advanced navigation patterns (
NavigationSplitView,NavigationStack) - 🗂️ Tab-based or multi-column layouts
- ⭐ Add a "Favorites only" toggle to filter the list
- 📊 Integrating Apple’s SwiftData or additional tutorial paths






