
Explore getting started with iOS 9 development by learning Xcode and Swift, from basics like variables, optionals, and collections to view controllers, MVC, and table view apps.
Install and set up Xcode, create a Swift playground, and run a hello world program to see console output and print statements, while exploring basic project options.
Explore the iOS Xcode interface by creating a new Swift single-view project, then navigate the file, symbol, find, issue, and test navigators while configuring project settings and breakpoints.
Explore the right inspector panel in the interface builder, including file details, templates, snippets, libraries, and inspectors for identity, attributes, size, and connections.
Explore the Xcode editor, a context-sensitive text editor that switches between swift source, interface builder, and storyboard or nib editors. Use navigation, marks, separators, and debug window for versioned work.
Create a hello world iPhone app with Xcode and storyboard, illustrating model–view–controller architecture and interface builder, then adjust the storyboard metrics for a phone view and add a hello button.
Create an IBAction method for a UI button and connect it using three wiring methods in the target-action pattern, then print Hello world to verify the app runs.
Bind a storyboard label to an IBOutlet in the view controller and update its text to display hello x code when the say hi button is pressed.
Discover variables and constants in Swift using a playground to declare var for mutable values and let for constants, and observe mutating errors when modifying a let.
Explore Swift's primitive types: int, double, string, bool, and tuple. Learn about int and double subtypes, strong type checking, and type annotations and casting in practice.
Master strings and characters in swift, from literals and concatenation to mutable versus immutable strings. Explore unicode grapheme clusters, indexing with start index and advanced by, and looping through characters.
Discover how booleans work in Swift, with true/false values, explicit boolean tests, handling optionals and nil, and safe unwrapping plus string interpolation.
Explore tuples in Swift: group name, price, and quantity into one type, access elements with dot syntax or indices, name elements, and pass or return tuples from functions.
Explore Swift's collection types—arrays, sets, and dictionaries—while learning how to fix unresponsive playgrounds by creating a new playground from the file menu rather than the welcome path.
Align the command line tools version with your Xcode version in preferences, locations, ensuring the dropdown displays the exact version to fix playground errors.
Explore Swift arrays, including zero-based indices, type safety, and common operations like append, insert, and remove, plus array literals, slices, and ranges used in for loops.
Learn how Swift sets are unindexed collections of like type values with no duplicates, created with set annotations and array initialization, and perform contains, insert, remove, intersection, and union.
Learn how to use dictionaries in Swift to store key-value pairs, declare and initialize them, access and update values, remove entries, and find the day with the highest temperature.
Explore Swift loops: for, for-in, while, and repeat, including counted loops versus uncountable loops, arrays, indexing rules, and control statements like break and continue.
Explore Swift decision constructs, including if, guard, and switch, with each pattern's condition handling, else logic, loop and function usage, and tuple switch examples.
Learn basic function syntax in Swift, including parameter lists, return values, and how external and internal parameter names affect calls.
Learn how default parameters and variadic parameters work. Understand external and internal parameter names, default values, and one variadic parameter rule with examples.
Demonstrate value and reference type parameters in Swift, showing how value types copy on function pass, how inout and ampersand pass references, and how var parameters enable mutation.
Explore closures as a type of function that captures scope and enables higher-order operations. Learn unnamed and trailing closures, and how map and reduce use closures in Swift.
Explore Swift enumerations as a type definition using a stoplight with red, amber, or green cases. Learn how associated values and type inference extend enums beyond C-style unions.
Learn to define Swift enumerations with raw values, assigning red=1, amber=2, green=3, instantiate from rawValue, and use hashable types like 32-bit hex colors.
Discover swift enums with associated types that behave like unions, storing ints, characters, strings, or arrays. Learn to extract values with switch and embed functions to create arrays from strings.
Explore how Swift enumerations use initializers to set defaults, such as Sunday for days of the week, and how raw value initializers map to cases.
Explore mutating functions in enumerations, showing how reassigning self within a var instance changes the enum case, with associated types like string, int, and dictionary.
Explore how Swift defines classes and structures, their properties, methods, and basic inheritance. Compare a circle class and a circle struct to see reference versus value types and mutating behavior.
Discover how computed properties derive values at runtime by using getters and setters to calculate a circle’s area from its radius and update the radius when setting the area.
Discover swift property observers, willSet and didSet, for stored properties like circle radius, and see how they streamline code while implementing a push and pop stack.
Define and use a lazy property to defer initialization until needed, illustrated with a fraction whose decimal is computed by a closure and becomes nil when the denominator is zero.
Explore type properties and type methods, using static properties to belong to the type, track instance counts, and design factory methods that return new type instances.
Define a root class and a sellable item subclass to illustrate inheritance in Swift. Learn name, product ID, count, price, total price, discount, and colon syntax.
Begin iOS development by building a simple first app with a label, text field, and hello message, and learn keyboard behavior and the simulator keyboard toggle.
Create a new Xcode project with a single view iOS app in Swift, and implement a model-view-controller flow using a model class for the user name.
Instantiate a model class to encapsulate your app’s data, instead of embedding it in the view controller, using a let constant and the initializer, then wire the view from storyboard.
Bind the view controller to the storyboard, set up an iPhone interface with labels and a text field, and apply auto layout constraints to create a functional iOS 9 view.
Connect a text field and label in a view controller with outlets and actions, handle the done key, validate input, and display a greeting while introducing model–view–controller concepts.
The model-view-controller pattern separates data from presentation and puts business logic in the controller. The controller wires views to models via outlets and actions, using target-action to handle events.
Explore how the controller and model communicate via delegation and protocols, enabling the model to notify the controller when data meets a condition, such as reaching a maximum count.
Build and wire a simple iOS 9 people count app by binding count and reset buttons, and updating labels from a model with a max count.
Apply delegation by using a count delegate protocol so the model notifies the controller when max count is reached, then adopt and implement the protocol to update the UI.
Explore displaying multiple views with a storyboard segue from a button to a new view controller. Use an identifier, a show segue, and dismiss the view controller to go back.
Learn to unwind navigation with the exit control by creating an IBAction that takes a storyboard segue, binding it to the exit to unwind back to the target controller.
Convert a single view app into a navigation controller app, delete the initial view, and bind a custom navigation controller class to manage a stack of view controllers.
Create a root view controller in the navigation controller and connect it to the route view controller with a relationship segue, then add a second view controller with show segue.
Explore passing data forward in a navigation controller by using prepare for segue, casting the destination view controller, and showing a hello message with the entered name.
Use delegation to send the entered name from the name view controller back to the route view controller within a navigation controller, defining a protocol, delegate, and text field handling.
Adopt the name delegate protocol in the root view controller, implement the userEntered method, and assign the destination’s delegate to self during prepare for segue to receive the name.
Discover how a tab bar controller manages multiple view controllers with a bottom tab bar and switch between them; set up items, icons, badges, and relationships to other controllers.
Explore iOS human interface guidelines for tab bar icons and assets. Build a two-tab phonebook app using a dictionary model, delegation, and adding contacts.
Learn to display tabular data in an iOS app by wiring a table view controller to a simple model, configuring prototype cells, and using a reuse identifier.
Discover how a table view controller uses the data source and delegate methods to supply sections, rows, header titles, and index-path driven data mapping.
Set the table view style to grouped to create sections with headers and rows. Adjust separators and insets to control the title alignment and spacing between sections and rows.
Add headers and footers for table view sections and implement a section index titles array to jump to sections; handle row selection to present a detail view.
Learn to present a dictionary of animals in a table view with a subtitle style, showing animal name as the title and scientific name as the subtitle, using downcasting.
Push a detail view controller from a selected table view cell, pass the animal name, type, and legs, and update the detail label accordingly using a disclosure indicator.
Choose an interesting collection, model it as an array or dictionary, present it in a table view controller with sections and an index, then segue to a detail view controller.
Learn to extend a table view note taker app by enabling editing and saving state between runs, using a navigation controller, segues, and an add note flow with subtitle-aware cells.
Model the notes app stores notes as a dictionary keyed by time strings, with subject and text, and supports add, remove, and save-load via plist in the documents directory.
Explore loading notes into a table view, sorting by date, and displaying subjects in an iOS 9 app. Learn to add notes via a delegate, update the model, and refresh.
Discover how to dismiss the keyboard for text views and text fields by resigning first responder with a dedicated button, plus proper event actions.
Tap a table cell to present a detail view with a multi-line note, time stamp, and subject, populated via a segue with optional unwrapping.
Learn to enable deletion in a table view by adding an edit button and implementing the commit editing style method to delete from data model before removing row, including swipe-to-delete.
Learn to create, edit, and organize code snippets in the Xcode snippet library, drag and drop reusable boilerplate code, and manage deletion for efficient development.
Implement a model delegate with the table view controller to present a friendly alert when no plist is found, guiding users to add notes after loading.
Clean up the code by removing print statements and complete the final exercise, then reproduce the note taker app from scratch, mastering controllers, views, and storyboards for iOS.
This course teaches the fundamentals of developing iOS applications using version 2 of the Swift programming language.
The course is in 10 units: the first six cover the Swift language itself; the last four concentrate on the core view controller architecture of an iOS app.
At the end of the course, you’ll be able to write iOS applications that use tables, hierarchical and tabbed navigation, and understand the principles behind developing any iOS application.
The course will be complimented with shorter sessions on the various extension frameworks at a later date, including SpriteKit, SceneKit, HealthKit, WatchKit, etc.
Topics include:
- Introduction to working with Xcode
- Data types, optionals, and tuples
- Collection types: arrays, sets, and dictionaries
- If statements and loops
- functions and closures
- Enumerations
- Classes and structures
- Stored and computed properties
- Inheritance in Swift
- Introduction to iOS
- Model - View - Controller and its role in iOS programming
- Delegation
- Navigation controllers and segues
- Tab bar controllers
- Table view controllers
- Using various cell sty les
- Using headers and footers
- Grouping vs. plain table styles
- Indexing a table view
- A case study: NoteTaker: Showing the full development of an app from start to finish in seven lessons.
I hope you join me as we explore this course together.