Swifty iOS 11

Idiomatic iOS 11 Development with Swift 4 (Two days)

This two day introductory course is for experienced developers who know Swift but are new to modern Swift-based iOS app development. To book this course for your group, company, or public event see Booking and Availability.

What you'll learn

This two day class will introduce you to the concepts and workflow of creating modern Swift based iOS apps for the iPhone and iPad.

We begin day one with single-view applications. This lets us focus on what is different when writing code in Swift. You learn to communicate among elements of the GUI, source code, and model. We take advantage of advances in Xcode to position elements and support localization and accessibility. We end the first day with an exploration of multi-view applications and how to send information back and forth between views presented manually and those presented using storyboard segues. We separate the code into separate modules.

During the second day you will build more complicated applications with multiple scenes. We'll support table views and collection views that are presented using Navigation and Tab Bar Controllers. We look briefly at using Core Data, JSON, and asynchronous network requests.

What you need

You need a Mac running Sierra or High Sierra with the latest version of Xcode 9 installed. You'll work with Xcode projects and the iOS Simulator throughout the course.

Syllabus Highlights

iOS App Fundamentals

Meet Xcode

Create a new project




iOS Simulator

A simple UI

The Storyboard

Initial Scene


Buttons and labels

Attribute Inspector

Constraints, Autolayout, and Stack Views

Outlets and Actions

Create and configure an outlet and outlet collection

Use the outlet and outlet collection

Create and configure multiple actions

Connection Inspector

Implement the actions


Model View Controller

Understanding View Controllers

Breaking up View Controllers



Passing closures

Simple Models

Custom UI (Optional)

View Subclasses

Targeting multiple devices

Device specific layouts

Localizing the Storyboard

Localizing Strings

Creating and using designables

Inspectable properties

Multiple Scenes/h3>

One App with Two Scenes

Add view controller to storyboard

Configure the second scene

Create a button to trigger the segue

Create and configure a segue

Manual Transitions

Custom view controller subclass

Provide a public property

Implement action to present second scene

Create behavior to dismiss second scene

Forward information

Use the information


Connect Segue from first to second scene

Implement prepareForSegue()

Create Unwind Segues

Create custom segue subclasses

Pass information back and forth

Enhance the UI

Gesture Recognizers

Image Views

Asset Catalogue



Separate Storyboards

Storyboard References

Add a framework

Present content in a separate module

Communicate information forward and back

Minimize coupling


Connect the delegate

Conform to delegate protocol

Closures as an alternative

Table View Based Apps

Separating Concerns

New project using MVVM/MVC


Complicating the model

Using the Module for Insert

Simple Persistence with User Defaults

Table Views

Delegate and Data Source

Connecting to the same model with a different view model

Enable Delete and Move

Using the Module for Insert

Assembling apps from pieces


Tab Bar Controller

Nav Controllers

Connecting multiple scenes

Network Applications (Optional)

Core Data

Create the data model

Generated classes

The Core Data Stack

The Context on the Main Queue

Background Contexts


Asynchronous Network Calls

Handling Response

Parsing JSON

Creating Model object

CRUD and Saving to Core Data

Custom Cells

The Data Source and View Model

Cell access to model instance

Cell knowledge of view

Filling the custom cell

Passing Info

Prepare for segues

Segue dependent set up

Passing selected entity to next Controller

Retrieving information for entity from Core Data

Displaying the results

Collection Views

Collection View Data Source

Custom Cell

Gathering relevant information

Displaying the results