
Explore iOS development with UIKit and Swift through project-based learning, building a map app with location, a Core Data budget app, plus API-driven features with Xcode previews of programmatic UI.
Review the prerequisites for this course, including experience with UI kit and knowledge of MVC architecture, to build real life projects with surf language.
Download each lecture's resource file to follow along, and download the final resource file from the last lecture to access the course materials.
Remove storyboards from your UIKit app and implement the UI programmatically by deleting the main storyboard, updating the info list, and configuring a window to present the view controller.
Build a UIKit app that searches for points of interest and shows nearby burger places on a map, with tap-to-select, call, and directions via Apple Maps.
Import MapKit, create a lazy map view, and constrain it to fill the screen to display an interactive map with pan and zoom, plus future search for points of interest.
Add a search text field overlay on a map to search for points of interest like coffee, taco shops, and burger shops, with padding, styling, and constraints.
Request user permission to access location using when in use or always options, initialize a location manager, and handle location updates to show the user's position on a map.
Learn to zoom in on the user’s location by implementing a location authorization check, handling status changes, and centering a map region on the user’s coordinates.
Learn to implement a nearby-places search in iOS development using UIKit and Swift with MKLocalSearch, wire a text field delegate to capture input, perform local search, and prepare map annotations.
Display a list of places using a places table view controller, register a cell, and present the list as a page sheet while passing the user location and place annotations.
Calculate the distance from the user location to a place, format it for display in meters or miles, and show the result in the list and map.
Create and configure a custom place annotation using map item and place mark data, then display annotations on the map and in a list of nearby places.
Conform to MKMapViewDelegate to access the selected map annotation, cast to a place annotation, update a shared places array, and present the places sheet when users select a location.
learn to navigate from a places table to a place detail screen, display the name and address, and add directions and call actions using a place annotation.
Add a directions button that opens Apple Maps with the place’s coordinates and starts navigation, and a call button that dials the place’s phone number after formatting it.
Build a budget app with UIKit and Core Data to track categories and transactions, add and delete categories, validate input, and display the remaining budget as transactions change.
Create a budget category core data model, add a budget entity with name and amount attributes, and explore class definition code generation in a starter project.
Create and initialize a Core Data stack with a lazy persistent container, load persistent stores for the budget model, and pass the container to the budget categories table view controller.
Build the add budget screen by wiring a navigation controller and presenting the add budget category view with name and amount inputs and a save button.
Develop form validation for the add budget screen by creating a property formValid that checks name and amount, validates numeric value greater than zero, and displays an error when invalid.
Learn to save a budget category directly in the view controller after form validation, using the view context to create and save with the persistent container, and dismiss the modal.
Display budget categories using a fetch results controller with a budget category fetch request, sorting by name ascending, and a table view that auto updates on data changes.
Create a transaction entity with name, amount, and date created; link budget category to transactions (to-many) and transaction back to category (to-one).
Create the budget detail view controller to add transactions by passing the budget category and persistent container, and build a user interface with name, amount, table view, and save button.
Wire the save transaction button and implement the save functionality to persist a transaction with name, amount, date, and its budget category, while validating the form before saving.
Display transactions for a budget category using a fetched results controller, filtering by category and sorting by date created descending, with live UI updates in a UIKit and Swift project.
Display the transactions total with a private computed property that sums all transactions from fetch results controller, shown in currency, update on add or delete, and reset form after success.
Delete a transaction by implementing the UI table view delegate's commit editing style in the budget details view controller, fetching the transaction, and persisting the change after deletion.
Create a custom budget category table view cell in UIKit to display category name, total budget, and remaining amount, using stack views and live previews for visual design.
Integrate the budget category table view cell into the budget categories table view controller, register the custom cell, and implement a configure function to display name, amount, and remaining.
Create and integrate a budget category Core Data class, resolve naming conflicts, add a remaining amount property, and implement transaction total calculations with Core Data extensions.
Learn to delete a budget category and cascade delete its transactions using Core Data with a table view, including commit editing style, error alerts, and reusable UI view controller extensions.
Build a UIKit app that consumes a fake API to display categories, products, and prices, integrates SwiftUI components, and implements a generic network layer with add and delete product features.
Explore the classy Fake Store API to display categories and their products, perform create, update, and delete operations on categories and products, and support authentication using tokens with pagination.
Create a store HTTP client to fetch all categories, decode them into a category model, and implement environment-aware URLs for development and production to feed the categories table.
Learn to fetch and display categories in a table view, handle async calls with try await, present errors, and configure cells with category names and images to drive product lists.
Implement get products by category as an async function, add a product model, update the URL helper, decode results with JSONDecoder, and enable navigation from category to its products page.
Create a products table view controller in UIKit to display products based on the selected category, fetch them asynchronously, and navigate to a product screen using the category ID.
Load a SwiftUI product cell view into a UIKit table using UIHostingConfiguration in iOS 16 to display product title, description, and price.
Create and present an add product view via a right bar button item using AddProductViewController. Preview UI with UIKit and SwiftUI, featuring title, description, price, image, and a category picker.
Create a SwiftUI category picker view that fetches categories via the store http client, displays them in a picker, and exposes the selected category to the caller.
Add product form validation in add product view controller by enabling the save button only when title, price, image URL, and description are valid.
Implement a delegate-driven flow to persist a new product by posting a create product request to the server, decoding the created product, and updating the list.
Learn to build a product detail view in UIKit by passing a product to a detail view controller, presenting title, description, price, images, and delete actions via navigation.
Display product images in a horizontally scrolling SwiftUI view embedded in a UIKit product detail screen, using an image loader to download URLs and present UIImages with a loading indicator.
Attach a delete button in product detail view to call the store http client’s delete product endpoint with the product ID, decode json response, and use RTA to confirm deletion.
Show errors to users by adding a reusable show alert extension for view controllers that logs the error and presents a UI alert controller with a title and message.
Replace alerts with a bottom banner message view in swiftui, using a message type enum (success, warning, error) to drive colors, delivered via a hosting controller in uiKit.
Make a correction, and explain that the course has not yet covered a generic network layer. Learn how to create a generic network layer in this section.
Create a generic networking layer to simplify store http client. Add a resource and an http method enum, with quotable types, to enable operation function for get, post, and delete.
Replace multiple endpoint-specific calls with a single generic load function that handles get, post, and delete using URLComponents, optional query items, and JSON decoding.
Implement a generic network layer and refactor calls to load resources like categories and products, enabling create, delete, and display flows in a UIKit and SwiftUI app.
Explore the next steps after building maps, core data with SQLite, and a third-party JSON API, using these apps as templates to create or update your iOS projects.
Welcome to “iOS Development Using UIKit & Swift - Project Based Learning”. UIKit is still the dominant framework when building iOS applications. This course covers multiple real world projects, implemented programmatically using the UIKit framework without the use of Storyboards.
Let’s check out the course content below:
NearMe App:
You will learn how to create a MapKit application in UIKit. The app will allow you to search closest points of interest near your current location. This can be a burger joint, taco store, gas station, cafe and more. You will also learn how to display annotations on the map and even display the locations in a list. Users will be able to run the app on their physical device, get directions and even make a call to the designated place.
Budget App:
In this app, you will learn how to use Core Data to persist information locally on the user’s device. You will be building a Budgets application that will keep track of categories and the related transactions for each category.
Store App:
In this app, you will learn how to integrate a UIKit application with a JSON API. You will consume multiple endpoints of a third party api and perform GET, POST and DELETE operations. You will also learn how to inject SwiftUI views into a UIKit application and visualize UIKit controllers using Xcode previews. The app will also cover how to create a generic network layer.
What will you learn in this course?
Students will learn how to create UIKit applications with Swift programmatically.
Students will learn how to use MapKit and Core Location to build real world applications.
Students will learn Core Data and how to persist information in SQLite databases. Students will also learn about creating one to many relationships in Core Data.
Students will learn how to consume JSON from a third party app and perform GET, POST and DELETE operations.
Students will also learn how to integrate SwiftUI views into a UIKit application.
Who is this course for?
This course is for developers who want to learn how to build UIKit applications programmatically, without using Storyboards.
Students who are interested in learning new techniques for building iOS applications.
Students who are interested in learning how to make MapKit, Core Data and JSON using UIKit framework.
Students who are interested in learning how to integrate UIKit with SwiftUI framework and using SwiftUI views in a UIKit application.
All the lectures in the course are accompanied with downloadable resources (code). All code is implemented using the latest version of Xcode and iOS framework.
Thank you again for enrolling in this course. I am sure you will enjoy this course and I can’t wait to see what apps you build in the future.