
Begin as a complete beginner and build iOS apps with SwiftUI's declarative syntax toward App Store submission, using macOS Sonoma and Xcode 15.
Watch this Xcode walkthrough guides you through creating a new iOS app with SwiftUI, selecting templates, naming the project, configuring basic settings, and previewing the content view in canvas.
Define the UI in SwiftUI using a vertical stack with an image view (globe) and a text view (Hello World), with previews and iPhone 15 Pro testing.
Learn to add a SwiftUI button in Xcode, set its text and action, and print 'button tab' when pressed. Run in the simulator to view and verify the console output.
Explore how VStack, HStack, and ZStack group views to create vertical, horizontal, and layered layouts; adjust spacing and alignment with leading, center, and trailing.
Demonstrate layering with zstack and vstack to create a button with a yellow circular background, and use the attributes inspector to apply modifiers like fill, frame, and font.
build a counter app in SwiftUI using a state variable count, display it in a label, and increment with a button plus a reset to zero; view updates automatically.
Build a BMI calculator app in SwiftUI, using text fields for weight and height, state variables and binding, and styling with borders and modifiers to display the BMI and categories.
Create a SwiftUI BMI calculator with a calculate BMI button, convert weight and height inputs to doubles, handle optionals, convert cm to m, and format the result to one decimal.
Implement BMI classification logic in a SwiftUI iOS app by adding a classification state and using if-else to label BMI as underweight, normal, overweight, or obese, and display the result.
Explore when to use var and let in Swift to model constants and mutable values, such as weight, height, BMI, and runtime classification, and practice good immutability habits.
Master safely unwrapping double optionals in Swift by using if let to avert nil crashes, and apply these concepts to a SwiftUI BMI calculator app.
Develop a to-do list app with a SwiftUI list view, dynamically populated todos, and adding, removing, and editing items; rows use VStack to display title, date, notes, and stars.
Define a todo class with title, note, date, and importance, initialize a todos array, and populate a SwiftUI list using a forEach loop with a unique id.
Wrap the to-do list in a navigation stack to enable tapping a row and navigate to a details view, with navigation titles that change as the list content changes.
Create a classic todo list app with a dynamic list and navigation to a detail view, built with SwiftUI, then add a scroll view, navigation title, and persistence for changes.
Learn how Swift Data persists todo items by saving them to an internal database and managing the model with a model container in SwiftUI.
Set up a SwiftUI view with SwiftData by defining a model context in the environment and loading todos via a query. Learn to batch in-memory changes and save to storage.
learn to add to do items in a SwiftUI iOS 17 app by tapping a toolbar button to present add to do view as sheet and insert into the model.
Learn to build an add todo form in SwiftUI using environment and model context, with state bindings for title, note, date, and importance, plus date picker and cancel/save toolbar.
Sort to-do items by date in a SwiftUI Contentview and reverse the order to display later dates on top.
Learn how to edit existing to do items in SwiftData by building an edit to do view, toggling edit mode, and routing via the navigation link from the list.
Implement edit mode by presenting a form bound to the editing todo's title, date, and note, pre-populating fields for seamless edits.
Persist edits to a todo by tapping done to exit edit mode, returning to the todo details view; delete a todo via a red destructive 'delete' button in the toolbar.
Specify a todo's importance with a slider from 1 to 5, binding to the importance state and updating the add and edit todo views.
Connect your app to the internet to fetch GitHub users via the search endpoint, and decode JSON into codable structs with items and login, avatar URL, and HTML URL.
Fetches GitHub users by building a get request, decodes JSON from the API into a users state variable with JSONDecoder, and updates the view using URLSession dataTask and resume.
Display GitHub users in a list inside a navigation stack, showing each login and URL with a loading progress view during data fetch.
Display GitHub user avatars in a SwiftUI list by loading images asynchronously from avatar URLs with AsyncImage, resizing to 50 by 50, and showing a no sign placeholder on failure.
Wrap each user row in a Link view to open the GitHub user page in Safari, using the HTML URL property, with URL unwrapping and SwiftUI's Link for navigation.
Add a searchable search bar in a SwiftUI navigation stack, bind user input to a search text state, and fetch GitHub users via GitHub RESTful API using Codable and JSONDecoder.
In this course, we take you on a fun, hands-on and pragmatic journey to learning iOS 17 development using SwiftUI. You'll start building your first iOS app within minutes. Every section is written in a bite-sized manner and straight to the point as I don’t want to waste your time (and most certainly mine) on the content you don't need. In the end, you will have the skills to create an app and submit it to the app store
In the course, we will cover:
Chapter 1: Introduction
Chapter 2: Body Mass Index Calculator
Chapter 3: To Do List App Using List
Chapter 4: Persistent Data Using SwiftData
Chapter 5: Getting Data from an API: GitHub Users
Chapter 6: Publishing your App on to the App Store
The goal is to teach you iOS 17 development in a manageable way without overwhelming you. We focus only on the essentials and cover the material in a hands-on practice manner for you to code along.
About the Reader
No previous knowledge on iOS development required, but you should have basic programming knowledge.
About the Author
Greg Lim is a technologist and author of several programming books. Greg has many years in teaching programming in tertiary institutions and he places special emphasis on learning by doing.