Get $1 credit for every $25 spent!

iOS Coding Mastery Bundle

Courses
7
Lessons
1,749
Enrolled
363

What's Included

Product Details

Access
Lifetime
Content
34 hours
Lessons
627

The Bitfountain Immersive iOS 9 Development Course

Develop for iOS 9 with This Massive, Top-Rated, 34-Hour Training

By Bitfountain | in Online Courses

If you've ever considered developing iPhone and iPad applications, then this is the course for you. Through this fully immersive iOS 9 course, you'll learn Apple's new programming language, Swift 2.0, and build several actual iOS apps. If you've never coded before, this is the perfect gateway to the highly lucrative world of iPhone and iPad app development.

  • Access 627 lectures & 34 hours of content
  • Learn important design patterns & best practices for developing mobile applications
  • Discover Xcode 7, the latest version of the coolest Integrated Development Environment on the market
  • Build beautiful interfaces w/ Storyboards
  • Learn by building actual, fully functional apps
  • Understand & recreate many of the features on popular iOS applications
Eliot Arntz regularly teaches iOS development classes and workshops at General Assembly and guest lectures for companies and development boot camps around NYC. He also taught the inaugural class for Coalition for Queens which focused on increasing diversity in iOS development. He also coaches students in a one-on-one environment with a focus on transitioning to full time development. Eliot cofounded and organizes the iOS Office Hours meetup NYC. In his free time he works as a contractor for startups focusing on agile development. For more details on this course and instructor, click here.

Details & Requirements

  • Length of time users can access this course: lifetime
  • Access options: web streaming, mobile streaming
  • Certification of completion not included
  • Redemption deadline: redeem your code within 30 days of purchase
  • Experience level required: beginner

Compatibility

  • Internet required
  • Must be able to run Xcode 7. To view system requirements, click here.

Course Outline

  • 1 Welcome
    • TT-ACV - 1 - Welcome (5:21)
    • TT-ACV - 2 - Beta (0:32)
  • 2 iOS Introduction
    • iOS-ABB - 1 - Download XCode (1:44)
  • 3 Getting Setup
    • TT-ADC - 1 - Creating a Single View Application (5:17)
    • TT-ADC - 2 - Opening and Closing the Panes (8:06)
    • TT-ADC - 4 - A Quick Tour of XCode (6:29)
    • TT-ADC - 5 - Documentation (2:15)
    • TT-ADC - 6 - Help my Xcode is Broken (2:11)
    • TT-ADC - 7 - Syncing my Account and Preferences (5:05)
    • TT-ADC - 8 - Saving and Storing Projects (2:39)
  • 4 AnimalTrivia Introduction
    • iOS-ABC - 1 - Introduction (1:24)
    • iOS-ABC - 2 - Create a Project with XCode (5:14)
    • iOS-ABC - 3 - Running our Application with the Simulator (1:55)
  • 5 AnimalTrivia Storyboard
    • iOS-ABN - 1 - Changing the Background UIColor (6:09)
    • iOS-ABN - 2 - Adding a UIImageView (4:32)
    • iOS-ABN - 3 - Adding our first UILabels to Animal Trivia (9:48)
    • iOS-ABN - 4 - Minimum Font Scale for a UILabel (2:48)
    • iOS-ABN - 5 - Displaying our Platypus Image (4:17)
    • iOS-ABN - 6 - Adding Multiple Choice UIButtons (2:43)
    • iOS-ABN - 7 - Adding a Next UIButton (2:11)
    • iOS-ABN - 8 - Naming UIButtons in the Document Outline (1:50)
    • iOS-ABN - 9 - Adding Images for Correct and Incorrect Answers (2:30)
  • 6 AnimalTrivia Connections
    • iOS-ABO - 1 - Connecting up our UILabels (7:07)
    • iOS-ABO - 2 - Connecting up our UIButtons (3:58)
    • iOS-ABO - 3 - Connecting up our UIImageViews (2:05)
    • iOS-ABO - 4 - Adding IBActions to our UIButtons (6:31)
    • iOS-ABO - 5 - Pause
  • 7 The Simulator
    • TT-ADD - 1 - Running and Screen Size (1:21)
    • TT-ADD - 2 - Exploring the simulator - Home : Reset (3:59)
  • 8 Common Errors
    • TT-ADG - 1 - Debugging and Connection Errors (5:53)
    • TT-ADG - 2 - Renaming a Project and Search (2:32)
    • TT-ADG - 3 - How to Remove a Breakpoint (1:14)
    • TT-ADG - 4 - Adding an Exception Breakpoint (2:10)
  • 9 Help
    • TT-ADF - 1 - How do I ask for help? (1:41)
    • TT-ADF - 2 - How do I post to disqus? (1:14)
    • TT-ADF - 3 - How do I share my code with the teachers? (1:30)
  • 10 Playground Introduction
    • TT-ADE - 1 - Creating a Playground (2:11)
  • 11 The Basics Introduction
    • SPL-AAA - 1 - Introduction (7:31)
  • 12 Constants
    • SPL-ABH - 1 - Constants Introduction (2:07)
    • SPL-ABH - 2 - Playing with Constants (3:31)
    • SPL-ABH - 3 - Constants Challenge (0:29)
    • SPL-ABH - 4 - Constants Challenge Solution (1:46)
  • 13 Variables
    • SPL-ABI - 1 - Variables Introduction (1:46)
    • SPL-ABI - 2 - Playing with Variables (5:37)
    • SPL-ABI - 3 - Variables Challenge (0:36)
    • SPL-ABI - 4 - Variables Challenge Solution (2:14)
  • 14 Thank You Letter
    • iOS-ACS - 1 - Setting up our UI (3:30)
    • iOS-ACS - 2 - Adding Icon and Launch Image (2:59)
    • iOS-ACS - 3 - Hooking up our UI (1:27)
    • iOS-ACS - 4 - Using a Multi-line constant (2:56)
  • 15 UILabel
    • NS-ABE - 1 - Storyboarding UILabel Part 1 (10:31)
    • NS-ABE - 2 - Storyboarding UILabel Part 2 (3:52)
    • NS-ABE - 3 - Storyboarding UILabel Part 3 (2:03)
    • NS-ABE - 4 - Connecting our UILabels and UIButtons (4:54)
    • NS-ABE - 5 - Adding our Color Constants (3:06)
    • NS-ABE - 6 - Implementing changeSchemesButtonTapped (6:26)
    • NS-ABE - 7 - Implementing fireLasersButtonTapped (5:30)
  • 16 UIColor
    • NS-ABF - 1 - Selecting a Background UIColor (2:07)
    • NS-ABF - 2 - Updating the Background UIColor in Code (3:18)
    • NS-ABF - 3 - Background UIColor with RGBA (3:06)
    • NS-ABF - 4 - Background Grayscale and HSB (3:04)
    • NS-ABF - 5 - Background UIImage (3:50)
  • 17 UIButton
    • NS-ABG - 1 - Adding UIButtons (9:04)
    • NS-ABG - 2 - Continue Adjusting our UIButtons (2:41)
    • NS-ABG - 3 - Adding IBOutlets and IBActions (7:20)
    • NS-ABG - 4 - Implementing makeItBlueButtonPressed (6:16)
    • NS-ABG - 5 - Implementing fireTheLasersButtonPressed (3:47)
    • NS-ABG - 6 - Implementing imageOnlyButtonTapped and alternativeImageButtonTapped (4:51)
  • 18 Attack of the Constants and Variables
    • iOS-ABM - 1 - Setting up our UI (2:45)
    • iOS-ABM - 2 - Adding IBOutlets and IBActions (1:12)
    • iOS-ABM - 3 - Using a Constant in a Project (3:05)
    • iOS-ABM - 4 - Adding a Variable in a Project (6:48)
    • iOS-ABM - 5 - Adding an Icon (3:26)
    • iOS-ABM - 6 - Adding a Launch Image (4:07)
  • 19 Multi-line Variables and Constants
    • SPL-ABJ - 1 - Playing with Multi-line Variables and Constants (5:19)
    • SPL-ABJ - 2 - Multi-line Variables and Constants Challenge (0:36)
    • SPL-ABJ - 3 - Multi-line Variables and Constants Solution (1:53)
  • 20 Type Annotation
    • SPL-ABK - 1 - Type Annotations Introduction (1:44)
    • SPL-ABK - 2 - Playing with Type Annotations (4:47)
    • SPL-ABK - 3 - Type Annotations Challenge (0:29)
    • SPL-ABK - 4 - Type Annotations Solution (1:58)
  • 21 Naming Constants and Variables
    • SPL-ABN - 1 - Naming Constants and Variables Introduction (3:08)
    • SPL-ABN - 2 - Playing with Naming Constants and Variables (8:55)
    • SPL-ABN - 3 - Naming Constants and Variables Challenge (0:50)
    • SPL-ABN - 4 - Naming Constants and Variables Solution (3:32)
  • 22 AnimalTrivia Attributes
    • iOS-ABP - 1 - Hiding and Unhiding UIElements (8:08)
    • iOS-ABP - 2 - More practice with Hiding and Unhidding UIElements (3:57)
    • iOS-ABP - 3 - Disabling UIButtons (2:45)
    • iOS-ABP - 4 - Updating TextColor (5:19)
    • iOS-ABP - 5 - Implementing our Next UIButton (3:07)
    • iOS-ABP - 6 - A few more Adjustments to our UI (2:35)
  • 23 AnimalTrivia Colors
    • iOS-ABQ - 1 - Using a Custom RGB (3:38)
    • iOS-ABQ - 2 - RGB with 255 and Hue Saturation and Brightness (3:35)
  • 24 AnimalTrivia SecondViewController
    • iOS-ABR - 1 - Adding a Question and an Image to our SecondViewController (4:09)
    • iOS-ABR - 2 - Finish Setting up the UI for the SecondViewController (7:56)
    • iOS-ABR - 3 - Creating a SecondViewController File (6:07)
    • iOS-ABR - 4 - Connecting our SecondViewController (5:50)
    • iOS-ABR - 5 - Implementing our aButtonPressed Function (4:10)
    • iOS-ABR - 6 - Implementing our bButtonPressedFunction (3:37)
    • iOS-ABR - 7 - Implementing our cButtonPressedFunction (2:31)
  • 25 AnimalTrivia ThirdViewController
    • iOS-ABS - 1 - ThirdViewController Introduction (2:42)
    • iOS-ABS - 2 - Create our ThirdViewController (3:29)
    • iOS-ABS - 3 - Finish Setting up the UI for the ThirdViewController (4:32)
    • iOS-ABS - 4 - Creating a ThirdViewController Class (2:38)
    • iOS-ABS - 5 - Adding IBOutlets and IBActions to the ThirdViewController (3:41)
    • iOS-ABS - 6 - Segue to the ThirdViewController (2:03)
    • iOS-ABS - 7 - Rounding the startOverButton (4:05)
    • iOS-ABS - 8 - Updating aButton with a New Image (6:58)
    • iOS-ABS - 9 - Updating bButton and cButton with a New Image (3:07)
    • iOS-ABS - 10 - Disable Buttons Function (5:40)
    • iOS-ABS - 11 - Creating a Constant for RedColor (4:31)
    • iOS-ABS - 12 - Finishing our Navigation and Wrapping up AnimalTrivia (3:49)
  • 26 Print
    • SPL-ABO - 1 - Print Introduction (2:15)
    • SPL-ABO - 2 - Playing with Print (9:33)
    • SPL-ABO - 3 - Print in XCode (5:50)
    • SPL-ABO - 4 - Print Challenge (0:39)
    • SPL-ABO - 5 - Print Solution (2:26)
  • 27 Comments
    • SPL-ABP - 1 - Comments Introduction (3:00)
    • SPL-ABP - 2 - Playing with Comments (6:03)
    • SPL-ABP - 3 - Comments Challenge (0:37)
    • SPL-ABP - 4 - Comments Solution (1:38)
  • 28 SemiColons
    • SPL-ABQ - 1 - Playing with Semicolons (3:47)
    • SPL-ABQ - 2 - Semicolons Challenge (0:48)
    • SPL-ABQ - 3 - Semicolons Solution (1:56)
  • 29 Integers
    • SPL-ACS - 1 - Integers Introduction (2:12)
    • SPL-ACS - 2 - Playing with Integers (3:30)
  • 30 - Floating-Point Numbers
    • SPL-ABR - 1 - Floating-Point Numbers Introduction (2:37)
    • SPL-ABR - 2 - Playing with Floating-Point Numbers (5:05)
    • SPL-ABR - 3 - Integers and Floating-Point Challenge (0:58)
    • SPL-ABR - 4 - Integers and Floating-Point Solution (3:58)
  • 31 Type Safety
    • SPL-ABS - 1 - Type Safety and Type Inference Introduction (4:16)
    • SPL-ABS - 2 - Playing with Type Safety and Type Inference (3:52)
    • SPL-ABS - 3 - Type Safety and Type Inference Challenge (1:23)
    • SPL-ABS - 4 - Type Safety and Type Inference Solution (5:00)
  • 32 Numeric Literals
    • SPL-ABT - 1 - Numeric Literals Introduction (0:49)
    • SPL-ABT - 2 - Playing with Numeric Literals (3:03)
    • SPL-ABT - 3 - Numeric Literals Challenge (0:30)
  • 33 Integer Conversion
    • SPL-ABW - 1 - Integer Conversion Introduction (2:32)
    • SPL-ABW - 2 - Playing with Integer Conversion (3:43)
    • SPL-ABW - 3 - Integer Conversion Challenge (1:01)
    • SPL-ABW - 4 - Integer Conversion Solution (5:33)
  • 34 Integer and Floating-Point Conversion
    • SPL-ABX - 1 - Integer and Floating-Point Conversion Introduction (3:29)
    • SPL-ABX - 2 - Playing with Integer and Floating-Point Conversion (3:06)
    • SPL-ABX - 3 - Integer and Floating-Point Conversion Challenge (1:02)
    • SPL-ABX - 4 - Integer and Floating-Point Conversion Solution (2:44)
  • 35 UITextField
    • NS-ABL - 1 - Exploring UITextField (8:28)
    • NS-ABL - 2 - Adding 2 UILabels and a Button (2:16)
    • NS-ABL - 3 - Adding IBOutlets and IBActions (2:36)
    • NS-ABL - 4 - Adjusting our UITextField (3:38)
    • NS-ABL - 5 - BorderStyle in Code (5:21)
    • NS-ABL - 6 - Updating the UILabels (3:14)
    • NS-ABL - 7 - Pressing the Return Key and Hiding the Keyboard (6:20)
  • 36 Shoe Converter
    • iOS-ACT - 1 - Setting up our UI (4:31)
    • iOS-ACT - 2 - Adding Assets (3:37)
    • iOS-ACT - 3 - Adding Connections (3:03)
    • iOS-ACT - 4 - Implementing convertMensShoeSizeButtonPressed (6:39)
    • iOS-ACT - 5 - Implementing convertWomensShoeSizeButtonPressed (3:44)
    • iOS-ACT - 6 - Adding a Background (3:10)
  • 37 Type Aliases
    • SPL-ABY - 1 - Type Aliases Introduction (1:50)
    • SPL-ABY - 2 - Playing with Type Aliases (3:02)
  • 38 If Statements
    • SPL-ABZ - 1 - If Statements Introduction (6:07)
    • SPL-ABZ - 2 - Playing with If Statements Part 1 (6:08)
    • SPL-ABZ - 3 - Playing with If Statements Part 2 (8:16)
    • SPL-ABZ - 4 - If Statements Challenge (1:22)
    • SPL-ABZ - 5 - If Statements Solution (3:00)
  • 39 Age of Laika
    • iOS-ACU - 1 - Setting up our UI (2:04)
    • iOS-ACU - 2 - Adding Assets (4:04)
    • iOS-ACU - 3 - Hooking up our UI (2:49)
    • iOS-ACU - 4 - Adding a Background (1:35)
    • iOS-ACU - 5 - Implement convertToDogYears (5:05)
    • iOS-ACU - 6 - Implement convertToRealDogYears (5:38)
  • 40 Booleans
    • SPL-ACA - 1 - Booleans Introduction (1:35)
    • SPL-ACA - 2 - Playing with Booleans (6:10)
    • SPL-ACA - 3 - Booleans Challenge (1:13)
    • SPL-ACA - 4 - Booleans Solution (5:53)
  • 41 Batman vs Superman
    • iOS-ACW - 1 - Setting up our UI (6:16)
    • iOS-ACW - 2 - Adding Connections (5:04)
    • iOS-ACW - 3 - Adding Some Properties (4:09)
    • iOS-ACW - 4 - Batman and Superman Stronger (2:43)
    • iOS-ACW - 5 - Batman and Superman Smarter (1:55)
    • iOS-ACW - 6 - Batman and Superman Craftier (1:49)
    • iOS-ACW - 7 - Assets and Calculate (6:59)
  • 42 Tuples
    • SPL-ACB - 1 - Tuples Introduction (3:25)
    • SPL-ACB - 2 - Playing with Tuples Part 1 (4:06)
    • SPL-ACB - 3 - Playing with Tuples Part 2 (5:57)
    • SPL-ACB - 4 - Tuples Challenge (1:07)
    • SPL-ACB - 5 - Tuples Solution (4:23)
  • 43 Optionals
    • SPL-ACC - 1 - Optionals Introduction (2:44)
    • SPL-ACC - 2 - Playing with Optionals (4:36)
  • 44 nil
    • SPL-ACD - 1 - nil Introduction (0:58)
    • SPL-ACD - 2 - Playing with nil (3:42)
    • SPL-ACD - 3 - Optionals and nil Challenge (1:15)
    • SPL-ACD - 4 - Optionals and Nil Solution (2:43)
  • 45 If Statements and Forced Unwrapping
    • SPL-ACE - 1 - If Statements and Forced Unwrapping Introduction (2:22)
    • SPL-ACE - 2 - Playing with If Statements and Forced Unwrapping (8:13)
    • SPL-ACE - 3 - If Statements and Forced Unwrapping Challenge (0:35)
    • SPL-ACE - 4 - If Statements and Forced Unwrapping Solution (2:44)
  • 46 Optional Binding
    • SPL-ACF - 1 - Optional Binding Introduction (2:20)
    • SPL-ACF - 2 - Playing with Optional Binding (7:52)
    • SPL-ACF - 3 - Optional Binding Challenge (0:33)
    • SPL-ACF - 4 - Optional Binding Solution (3:17)
  • 47 Implicitly Unwrapped Optionals
    • SPL-ACG - 1 - Implicitly Unwrapped Optionals Introduction (3:54)
    • SPL-ACG - 2 - Playing with Implicitly Unwrapped Optionals (5:31)
    • SPL-ACG - 3 - Implicitly Unwrapped Optionals Challenge (0:46)
    • SPL-ACG - 4 - Implicitly Unwrapped Optionals Solution (3:27)
  • 48 Movie Database
    • iOS-ACX - 1 - Setting up our UI (5:52)
    • iOS-ACX - 2 - Adding Connections (2:08)
    • iOS-ACX - 3 - Creating our Tuple (2:49)
    • iOS-ACX - 4 - Setting up our Initial UIView (1:53)
    • iOS-ACX - 5 - Updating our UIView (3:25)
  • 49 Error Handling
    • SPL-ACH - 1 - Error Handling Introduction (2:43)
    • SPL-ACH - 2 - Playing with Error Handling (2:14)
  • 50 Assertions
    • SPL-ACI - 1 - Assertions (2:35)
    • SPL-ACI - 2 - Playing with Assertions (2:48)
  • 51 Basic Operators Introduction
    • SPL-ACJ - 1 - Basic Operators Introduction (0:33)
    • SPL-ACJ - 2 - Playing with Basic Operators (2:21)
    • SPL-ACJ - 3 - Terminology Introduction (1:03)
    • SPL-ACJ - 4 - Playing with Terminology (4:41)
  • 52 Assignment Operator
    • SPL-ACK - 1 - Assignment Operator Introduction (1:08)
    • SPL-ACK - 2 - Playing with Assignment Operator (4:26)
  • 53 Arithmetic Operators
    • SPL-ACL - 1 - Arithmetic Operators Introduction (0:29)
    • SPL-ACL - 2 - Playing with Arithmetic Operators Part 1 (4:39)
    • SPL-ACL - 3 - Playing with Arithmetic Operators Part 2 (5:13)
  • 54 Tip Calculator
    • iOS-ADA - 1 - Setting up our UI (5:50)
    • iOS-ADA - 2 - Adding Connections (2:21)
    • iOS-ADA - 3 - Implementing convertButtonTapped (12:31)
    • iOS-ADA - 4 - Fixing our Tests (5:27)
    • iOS-ADA - 5 - Implementing implicitlyConvertButtonTapped (8:43)
  • 55 Compound Assignment Operators
    • SPL-ACM - 1 - Compound Assignment Operators Introduction (0:38)
    • SPL-ACM - 2 - Playing with Compound Assignment Operators (1:42)
  • 56 Comparison Operators
    • SPL-ACN - 1 - Comparison Operators Introduction (2:38)
    • SPL-ACN - 2 - Playing with Comparison Operators Part 1 (7:19)
    • SPL-ACN - 3 - Playing with Comparison Operators Part 2 (3:16)
    • SPL-ACN - 4 - Playing with Comparison Operators Part 3 (2:14)
    • SPL-ACN - 5 - Comparison Operators Challenge (0:41)
    • SPL-ACN - 6 - Comparison Operators Solution (2:22)
  • 57 Ternary Conditional Operator
    • SPL-ACO - 1 - Ternary Conditional Operator Introduction (1:57)
    • SPL-ACO - 2 - Playing with Ternary Conditional Operator (3:31)
    • SPL-ACO - 3 - Ternary Conditional Operator Challenge (1:07)
    • SPL-ACO - 4 - Ternary Conditional Operator Solution (3:44)
  • 58 Nil Coalescing Operator
    • SPL-ACP - 1 - Nil Coalescing Operator Introduction (3:10)
    • SPL-ACP - 2 - Playing with Nil Coalescing Operator (3:49)
    • SPL-ACP - 3 - Nil Coalescing Operator Challenge (0:26)
    • SPL-ACP - 4 - Nil Coalescing Operator Solution (4:03)
  • 59 UISwitch
    • NS-ACY - 2 - Setting up the UI (3:46)
    • NS-ACY - 3 - Adding Assets (2:12)
    • NS-ACY - 4 - Adding Connections (1:38)
    • NS-ACY - 5 - Adding a Background and Testing the Initial State (2:00)
    • NS-ACY - 6 - Changing the Thumb Tint Color (2:52)
    • NS-ACY - 7 - Implementing changeSwitchButtonTapped (3:42)
  • 60 Chicken or Egg
    • iOS-ADJ - 1 - Setting up the UI (3:21)
    • iOS-ADJ - 2 - Adding Assets (1:52)
    • iOS-ADJ - 3 - Adding Connections (1:11)
    • iOS-ADJ - 4 - Implementing findOutButtonTapped (4:22)
  • 61 Range Operators
    • SPL-ACQ - 1 - Range Operators Introduction (1:43)
    • SPL-ACQ - 2 - Playing with Range Operators (5:11)
    • SPL-ACQ - 3 - Range Operators Challenge (0:33)
    • SPL-ACQ - 4 - Range Operators Solution (1:22)
  • 62 Logical Operators
    • SPL-ACR - 1 - Logical Operators Introduction (1:30)
    • SPL-ACR - 2 - Playing with Logical Operators Part 1 (4:41)
    • SPL-ACR - 3 - Playing with Logical Operators Part 2 (3:16)
    • SPL-ACR - 4 - Playing with Logical Operators Part 3 (1:09)
    • SPL-ACR - 5 - Playing with Logical Operators Part 4 (2:48)
    • SPL-ACR - 6 - Logical Operators Challenge (0:55)
    • SPL-ACR - 7 - Logical Operators Solution (4:32)
  • 63 Sonar
    • iOS-ADK - 1 - Setting up the UI (4:05)
    • iOS-ADK - 2 - Adding Assets (1:58)
    • iOS-ADK - 3 - Adding Connections (2:13)
    • iOS-ADK - 4 - Updating viewDidLoad and Adding Some Attributes (3:28)
    • iOS-ADK - 5 - Implementing increaseRangeButtonTapped (3:43)
    • iOS-ADK - 6 - Implementing fireSonarButtonTapped (4:03)
  • 64 Calculator UI
    • AS-ADM - 1 - Adding our Assets (1:52)
    • AS-ADM - 2 - Adding the Keypad Buttons (3:16)
    • AS-ADM - 3 - Adding our Remaining UI (2:48)
    • AS-ADM - 4 - Hooking up Keypad Buttons (3:23)
    • AS-ADM - 5 - Hooking up our Remaining Buttons (2:24)
  • 65 Calculator Displaying Values
    • AS-ADN - 1 - Lets Display a Decimal (5:39)
    • AS-ADN - 2 - Lets try 0 and 1 (3:15)
    • AS-ADN - 3 - Displaying the Remaining Digits (1:56)
  • 66 Calculator Operations
    • AS-ADO - 1 - MultiplicationTapped (15:53)
    • AS-ADO - 2 - DivisionTapped (5:44)
    • AS-ADO - 3 - PlusTapped and MinusTapped (1:26)
    • AS-ADO - 4 - EqualsTapped (4:19)
    • AS-ADO - 5 - PlusMinusTapped (2:31)
    • AS-ADO - 6 - backspaceTapped (4:01)
    • AS-ADO - 7 - Fixing the 0 Value Left Behind (2:36)
  • 67 Functions Introduction
    • SPL-AFV - 1 - Functions Introduction (3:42)
  • 68 Defining and Calling Functions
    • SPL-AFW - 1 - Defining and Calling Functions Introduction (4:44)
    • SPL-AFW - 2 - Playing with Defining and Calling Functions (9:59)
    • SPL-AFW - 3 - Defining and Calling Functions Challenge (1:19)
    • SPL-AFW - 4 - Defining and Calling Functions Solution (3:43)
  • 69 Function Parameters and Return Values
    • SPL-AFX - 1 - Function Parameters and Return Values Introduction (1:32)
    • SPL-AFX - 2 - Playing with Function Parameters and Return Values Part 1 (6:13)
    • SPL-AFX - 3 - Playing with Function Parameters and Return Values Part 2 (3:20)
    • SPL-AFX - 4 - Function Parameters and Return Values Challenge (1:11)
    • SPL-AFX - 5 - Function Parameters and Return Values Solution (4:11)
  • 70 Functions with Multiple Return Values
    • SPL-AGB - 1 - Functions with Multiple Return Values Introduction (0:34)
    • SPL-AGB - 2 - Playing with Functions with Multiple Return Values Part 1 (4:46)
    • SPL-AGB - 3 - Playing with Functions with Multiple Return Values Part 2 (4:15)
    • SPL-AGB - 4 - Playing with Functions with Multiple Return Values Part 3 (3:38)
    • SPL-AGB - 5 - Functions with Multiple Return Values Challenge (0:26)
    • SPL-AGB - 6 - Functions with Multiple Return Values Solution (3:51)
  • 71 Function Parameter Names Introduction
    • SPL-AGD - 1 - Function Parameter Names Introduction (1:38)
    • SPL-AGD - 2 - Playing with Function Parameter Names (2:27)
  • 72 External Parameter Names
    • SPL-AGE - 1 - External Parameter Names Introduction (0:48)
    • SPL-AGE - 2 - Playing with External Parameter Names (3:20)
    • SPL-AGE - 3 - External Parameter Names Challenge (0:24)
    • SPL-AGE - 4 - External Parameter Names Solution (4:52)
  • 73 Omitting External Parameter Names
    • SPL-AGF - 1 - Omitting External Parameter Names Introduction (0:57)
    • SPL-AGF - 2 - Playing with Omitting External Parameter Names (1:12)
  • 74 Default Parameter Values
    • SPL-AGG - 1 - Default Parameter Values Introduction (1:22)
    • SPL-AGG - 2 - Playing with Default Parameter Values (2:33)
    • SPL-AGG - 3 - Default Parameter Values Challenge (0:27)
    • SPL-AGG - 4 - Default Parameter Values Solution (1:25)
  • 75 Constant and Variable Parameters
    • SPL-AGJ - 1 - Constant and Variable Parameters Introduction (1:52)
    • SPL-AGJ - 2 - Playing with Constant and Variable Parameters (7:52)
    • SPL-AGJ - 3 - Constant and Variable Parameters Challenge (0:24)
    • SPL-AGJ - 4 - Constant and Variable Parameters Solution (4:16)
  • 76 A Trip to the Zoo Initial Setup
    • iOS-APR - 1 - Storyboarding our UI (4:27)
    • iOS-APR - 2 - Connecting our UI (1:39)
  • 77 Classes and Structures Introduction
    • SPL-AHG - 1 - Classes and Structures Introduction (3:21)
  • 78 Comparing Classes and Structures
    • SPL-AHH - 1 - Comparing Classes and Structures Introduction (6:38)
  • 79 Definition Syntax
    • SPL-AHI - 1 - Definition Syntax Introduction (2:01)
    • SPL-AHI - 2 - Playing with Definition Syntax (3:40)
    • SPL-AHI - 3 - Definition Syntax Challenge (0:39)
    • SPL-AHI - 4 - Definition Syntax Solution (1:57)
  • 80 Class and Structure Instances
    • SPL-AHJ - 1 - Class and Structure Instances Introduction (3:13)
    • SPL-AHJ - 2 - Playing with Class and Structure Instances (5:43)
  • 81 Accessing Properties
    • SPL-AHK - 1 - Accessing Properties Introduction (2:17)
    • SPL-AHK - 2 - Playing with Accessing Properties (6:44)
    • SPL-AHK - 3 - Accessing Properties Challenge (0:24)
    • SPL-AHK - 4 - Accessing Properties Solution (4:11)
  • 82 Memberwise Initializers for Structure Types
    • SPL-AHL - 1 - Memberwise Initializers for Structure Types Introduction (1:15)
    • SPL-AHL - 2 - Playing with Memberwise Initializers for Structure Types (3:28)
    • SPL-AHL - 3 - Memberwise Initializers for Structure Types Challenge (0:44)
    • SPL-AHL - 4 - Memberwise Initializers for Structure Types Solution (3:33)
  • 83 Choosing Between Classes and Structures
    • SPL-AHQ - 1 - Choosing Between Classes and Structures Introduction (7:57)
    • SPL-AHQ - 2 - Choosing Between Classes and Structures Challenge (1:43)
    • SPL-AHQ - 3 - Choosing Between Classes and Structures Solution (5:39)
  • 84 Properties Introduction
    • SPL-AHS - 1 - Properties Introduction (2:24)
  • 85 Stored Properties
    • SPL-AHT - 1 - Stored Properties Introduction (0:58)
    • SPL-AHT - 2 - Playing with Stored Properties (3:17)
  • 86 Stored Properties of Constant Structure Instances
    • SPL-AHU - 1 - Stored Properties of Constant Structure Instances Introduction (0:44)
    • SPL-AHU - 2 - Playing with Stored Properties of Constant Structure Instances (3:49)
  • 87 Global and Local Variables
    • SPL-AIB - 1 - Global and Local Variables Introduction (1:45)
    • SPL-AIB - 2 - Playing with Global and Local Variables (11:54)
    • SPL-AIB - 3 - Global and Local Variables Challenge (1:14)
    • SPL-AIB - 4 - Global and Local Variables Solution (6:41)
  • 88 A Trip to the Zoo Penguin Struct Part 1
    • iOS-APS - 3 - Creating our Penguin Struct (2:24)
    • iOS-APS - 4 - Creating our Penguin Instance (3:35)
    • iOS-APS - 5 - Displaying our Penguin (1:44)
  • 89 Methods Introduction
    • SPL-AIF - 1 - Methods Introduction (1:07)
  • 90 Instance Methods
    • SPL-AIG - 1 - Instance Methods Introduction (1:19)
    • SPL-AIG - 2 - Playing with Instance Methods (6:06)
    • SPL-AIG - 3 - Instance Methods Challenge (0:45)
    • SPL-AIG - 4 - Instance Methods Solution (3:26)
  • 91 The self Property
    • SPL-AIJ - 1 - Introduction to self (2:51)
    • SPL-AIJ - 2 - Playing with self (3:09)
  • 92 Type Methods
    • SPL-AIM - Type Methods Challenge
  • 93 A Trip to the Zoo Penguin Struct Part 2
    • iOS-ARC - 6 - Our Penguin can Speak (2:15)
  • 94 For Loops Introduction
    • SPL-AFA - 1 - For Loops Introduction (0:41)
  • 95 For-In Loops
    • SPL-AFB - 1 - For-In Introduction (0:55)
    • SPL-AFB - 2 - Playing with For-In (4:45)
    • SPL-AFB - 3 - For-In Challenge (0:16)
    • SPL-AFB - 4 - For-In Solution (1:18)
  • 96 For Loops
    • SPL-AFC - 1 - For Introduction (1:35)
    • SPL-AFC - 2 - Playing with For (2:45)
    • SPL-AFC - 3 - For Challenge (0:29)
    • SPL-AFC - 4 - For Solution (1:32)
  • 97 A Trip to the Zoo Penguin Struct Part 3
    • iOS-ARD - 7 - Our Penguin can Trumpet a Number of Times (2:50)
    • iOS-ARD - 8 - Our Penguin can Speak a Number of Times (3:38)
    • iOS-ARD - 9 - Age of our Penguin (2:37)
  • 98 Array Introduction
    • SPL-AEG - 1 - Array Introduction (5:00)
  • 99 Creating and Initializing an Array
    • SPL-AEH - 1 - Creating and Initializing an Array Introduction (0:54)
    • SPL-AEH - 2 - Playing with Creating and Initializing an Array (6:44)
  • 100 Array Literals
    • SPL-AEI - 1 - Array Literals Introduction (1:49)
    • SPL-AEI - 2 - Playing with Array Literals (2:13)
  • 101 Accessing and Modifying an Array
    • SPL-AEJ - 1 - Accessing and Modifying an Array Introduction (4:28)
    • SPL-AEJ - 2 - Playing with Accessing and Modifying an Array Part 1 (1:58)
    • SPL-AEJ - 3 - Playing with Accessing and Modifying an Array Part 2 (9:47)
  • 102 Iterating Over an Array
    • SPL-AEK - 1 - Iterating Over an Array Introduction (2:26)
    • SPL-AEK - 2 - Playing with Iterating Over an Array (2:59)
    • SPL-AEK - 3 - Iterating Over an Array Challenge (2:24)
    • SPL-AEK - 4 - Iterating Over an Array Solution (5:35)
  • 103 arc4random_uniform
    • NS-AOV - 1 - Introduction to arc4random_uniform (1:23)
    • NS-AOV - 2 - Playing with arc4random_uniform (3:27)
  • 104 A Trip to the Zoo Penguin Struct Part 4
    • iOS-ARE - 10 - Our Penguin's randomFact (3:52)
  • 105 A Trip to the Zoo Creating our Animals Part 1
    • iOS-APT - 11 - Creating our Animal Class (3:07)
  • 106 Initialization Introduction
    • SPL-AJA - 1 - Initialization Introduction (1:50)
  • 107 Setting Initial Values for Stored Properties
    • SPL-AJB - 1 - Setting Initial Values for Stored Properties Introduction (1:31)
  • 108 Initializers
    • SPL-AJC - 1 - Initializers Introduction (0:45)
    • SPL-AJC - 2 - Playing with Initializers (1:54)
  • 109 Default Property Values
    • SPL-AJD - 1 - Default Property Values Introduction (1:00)
    • SPL-AJD - 2 - Playing with Default Property Values (1:09)
  • 110 Customizing Initialization
    • SPL-AJE - 1 - Customizing Initialization Introduction (0:38)
  • 111 Initialization Parameters
    • SPL-AJF - 1 - Initialization Parameters Introduction (0:58)
    • SPL-AJF - 2 - Playing with Initialization Parameters Part 1 (3:25)
    • SPL-AJF - 3 - Playing with Initialization Parameters Part 2 (4:34)
    • SPL-AJF - 4 - Initialization Parameters Challenge (0:19)
    • SPL-AJF - 5 - Initialization Parameters Solution (2:19)
  • 112 Local and External Parameter Names
    • SPL-AJG - 1 - Local and External Parameter Names Introduction (1:29)
    • SPL-AJG - 2 - Playing with Local and External Parameter Names (2:57)
  • 113 Initializer Parameters Without External Names
    • SPL-AJH - 1 - Initializer Parameters Without External Names Introduction (0:32)
    • SPL-AJH - 2 - Playing with Initializer Parameters Without External Names (1:21)
    • SPL-AJH - 3 - Initializer Parameters Without External Names Challenge (0:28)
    • SPL-AJH - 4 - Initializer Parameters Without External Names Solution (1:38)
  • 114 Optional Property Types
    • SPL-AJI - 1 - Optional Property Types Introduction (1:20)
    • SPL-AJI - 2 - Playing with Optional Property Types (2:37)
    • SPL-AJI - 3 - Optional Property Types Challenge (0:27)
    • SPL-AJI - 4 - Optional Property Types Solution (1:41)
  • 115 Default Initializers
    • SPL-AJK - 1 - Default Initializers Introduction (0:55)
  • 116 A Trip to the Zoo Creating our Animals Part 2
    • iOS-ARF - 12 - Adding Body Statistics to our Animal (3:53)
    • iOS-ARF - 13 - Adding Personal Information to our Animal (3:29)
  • 117 Accessing Superclass Methods, Properties, and Subscripts
    • SPL-AIV - 1 - Accessing Superclass Methods, Properties, and Subscripts Introduction (2:01)
    • SPL-AIV - 2 - Playing with Accessing Superclass Methods, Properties, and Subscripts (4:55)
    • SPL-AIV - 3 - Accessing Superclass Methods, Properties, and Subscripts Challenge (0:56)
    • SPL-AIV - 4 - Accessing Superclass Methods, Properties, and Subscripts Solution (4:32)
  • 118 A Trip to the Zoo Creating our Animals Part 3
    • iOS-ARG - 14 - Creating our Tiger (4:31)
    • iOS-ARG - 15 - Creating our Factory and Tiger Instance (5:05)
    • iOS-ARG - 16 - Adding an Animal Image (5:39)
    • iOS-ARG - 17 - Creating an Elephant Class (1:49)
    • iOS-ARG - 18 - Adding a Factory createElephant Class Function (2:45)
    • iOS-ARG - 19 - Creating our Lion Class and createLion Class Function (2:51)
    • iOS-ARG - 20 - Creating our LionCub Class and createLionCub Class Function (3:57)
    • iOS-ARG - 21 - Creating our animals and testing the functions (1:45)
    • iOS-ARG - 22 - Storing our Animals and Keeping an Index (4:06)
    • iOS-ARG - 23 - Updating our UI (5:42)
  • 119 Bitlist Basic List Part 1
    • iOS-APL - 1 - Creating our Project (2:20)
    • iOS-APL - 2 - Setting up the TodosViewController in the Storyboard (5:01)
    • iOS-APL - 3 - Adding TodoTableViewCell and AddTodoTableViewCell (9:23)
    • iOS-APL - 4 - Adding IBOutlets and IBActions to the TodosViewController (5:03)
  • 120 Enumerations Introduction
    • SPL-AHA - 1 - Enumerations Introduction (2:16)
  • 121 Enumeration Syntax
    • SPL-AHB - 1 - Enumeration Syntax Introduction (0:46)
    • SPL-AHB - 2 - Playing with Enumeration Syntax (4:53)
  • 122 Matching Enumeration Values with a Switch Statement
    • SPL-AHC - 1 - Introduction to Matching Enumeration Values with a Switch Statement (1:07)
    • SPL-AHC - 2 - Playing with Matching Enumeration Values with a Switch Statement (4:27)
    • SPL-AHC - 3 - Matching Enumeration Values with a Switch Statement Challenge (0:45)
    • SPL-AHC - 4 - Matching Enumeration Values with a Switch Statement Solution (2:23)
  • 123 Associated Values
    • SPL-AHD - 1 - Associated Values Introduction (2:04)
    • SPL-AHD - 2 - Playing with Associated Values (6:54)
    • SPL-AHD - 3 - Associated Values Challenge (0:28)
    • SPL-AHD - 4 - Associated Values Solution (2:53)
  • 124 Raw Values
    • SPL-AHE - 1 - Raw Values Introduction (1:01)
    • SPL-AHE - 2 - Playing with Raw Values (3:17)
    • SPL-AHE - 3 - Raw Values Challenge (0:23)
    • SPL-AHE - 4 - Raw Values Solution (1:54)
  • 125 Initializing from a Raw Value
    • SPL-AHF - 1 - Initializing from a Raw Value
    • SPL-AHF - 2 - Initializing from a Raw Value Challenge
    • SPL-AHF - 3 - Initializing from a Raw Value Solution
  • 126 Bitlist Basic List Part 2
    • iOS-AQQ - 5 - Creating a TodoModel (5:11)
    • iOS-AQQ - 6 - Creating Initial Data (3:42)
  • 127 UIView
    • NS-API - 1 - Introduction to UIView (4:36)
    • NS-API - 2 - Playing with UIView (3:52)
    • NS-API - 3 - Storyboarding UIView (3:54)
  • 128 UITableView
    • NS-AOX - 1 - UITableView Introduction (4:51)
    • NS-AOX - 2 - Playing with UITableView (9:58)
    • NS-AOX - 3 - Storyboarding UITableView Part 1 (6:55)
    • NS-AOX - 4 - Storyboarding UITableView Part 2 (1:32)
  • 129 UITableViewDataSource
    • NS-APA - 1 - Introduction to UITableViewDataSource (2:51)
    • NS-APA - 2 - Playing with UITableViewDataSource (5:56)
    • NS-APA - 3 - Playing with UITableViewDataSource Delete Row (7:09)
    • NS-APA - 4 - Playing with UITableViewDataSource Reorder Rows (6:01)
  • 130 UITableViewDelegate
    • NS-APB - 1 - Introduction to UITableViewDelegate (2:30)
    • NS-APB - 2 - Playing with UITableViewDelegate (1:57)
    • NS-APB - 3 - Adding a UITableView to our Storyboard (2:08)
    • NS-APB - 4 - Setting up our Data (3:16)
    • NS-APB - 5 - Setting up our UITableView (4:35)
    • NS-APB - 6 - Implementing cellForRowAtIndexPath (3:49)
    • NS-APB - 7 - Implementing didSelectRowAtIndexPath (2:26)
    • NS-APB - 8 - Delete a Row (2:18)
    • NS-APB - 9 - Moving Cells (5:13)
  • 131 Bitlist Basic List Part 3
    • iOS-AQR - 7 - Adding UITableVIewDataSource functions (4:00)
    • iOS-AQR - 8 - Setting up AddTodoTableViewCell (3:27)
  • 132 UITableViewCell
    • NS-AOY - 1 - Introduction to UITableViewCell (1:58)
    • NS-AOY - 2 - Playing with UITableViewCell (4:53)
    • NS-AOY - 3 - Storyboarding UITableViewCell Part 1 (4:58)
    • NS-AOY - 4 - Storyboarding UITableViewCell Part 2 (2:49)
    • NS-AOY - 5 - Storyboarding UITableViewCell Part 3 (3:30)
    • NS-AOY - 6 - Storyboarding UITableViewCell Part 4 (5:50)
  • 133 NSDate
    • NS-AOR - 1 - Introduction to NSDate (1:57)
    • NS-AOR - 2 - Playing with NSDate (3:32)
    • NS-AOR - 3 - Playing with timeInterval sinceDate (1:41)
    • NS-AOR - 4 - Playing with Comparing NSDates (5:29)
  • 134 NSDateFormatter
    • NS-AOT - 1 - Introduction to NSDateFormatter (1:47)
    • NS-AOT - 2 - Playing with NSDateFormatter Part 1 (4:06)
    • NS-AOT - 3 - Playing with NSDateFormatter Part 2 (4:20)
  • 135 Bitlist Basic List Part 4
    • iOS-AQS - 9 - Setting up TodoCell Part 1 (5:16)
    • iOS-AQS - 10 - Setting up TodoCell Part 2 (4:25)
  • 136 Extensions Introduction
    • SPL-ALL - 1 - Extensions Introduction (2:21)
  • 137 Extension Syntax
    • SPL-ALM - 1 - Extension Syntax Introduction (1:02)
    • SPL-ALM - 2 - Playing with Extension Syntax (2:25)
  • 138 Computed Properties
    • SPL-AHX - 1 - Computed Properties Introduction (0:53)
    • SPL-AHX - 2 - Playing with Computed Properties (2:12)
    • SPL-AHX - 3 - Computed Properties Challenge (0:36)
    • SPL-AHX - 4 - Computed Properties Solution (1:35)
  • 139 Extensions Methods
    • SPL-ALP - 1 - Methods Introduction (1:08)
    • SPL-ALP - 2 - Playing with Methods (3:18)
    • SPL-ALP - 3 - Methods Challenge (0:36)
    • SPL-ALP - 4 - Methods Solution (1:33)
  • 140 Bitlist Customizing the TodosViewController Part 1
    • iOS-APM - 11 - Adding a UITableViewDataSourceExtension (2:58)
    • iOS-APM - 12 - Implementing Editing Mode (2:41)
    • iOS-APM - 13 - Implementing canMoveRowAtIndexPath (1:30)
    • iOS-APM - 14 - Implementing moveRowATIndexPath (2:39)
    • iOS-APM - 15 - Deleting a Cell (2:56)
  • 141 NSNotificationCenter
    • NS-APH - 1 - Introduction to NSNotificationCenter (3:14)
    • NS-APH - 2 - Playing with NSNotificationCenter (3:57)
  • 142 UIResponder
    • NS-APK - 1 - Introduction to UIResponder (1:55)
    • NS-APK - 2 - Playing with UIResponder (1:50)
    • NS-APK - 3 - Storyboarding UIResponder (3:36)
  • 143 Bitlist Customizing the TodosViewController Part 2
    • iOS-AQT - 16 - Keyboard Notifications (4:09)
    • iOS-AQT - 17 - Implementing keyboardWillShow and keyboardWillHide (3:18)
    • iOS-AQT - 18 - Checking our addTodoTextField for Text (10:10)
  • 144 UIAlertController
    • NS-APO - 1 - Introduction to UIAlertController (1:57)
    • NS-APO - 2 - Playing with UIAlertController (2:35)
    • NS-APO - 3 - Storyboarding UIAlertController Part 1 (3:11)
    • NS-APO - 4 - Storyboarding UIAlertController Part 2 (6:43)
  • 145 Bitlist Customizing the TodosViewController Part 3
    • iOS-AQU - 19 - Adding a Todo (3:29)
    • iOS-AQU - 20 - Favorting a New Todo (3:41)
    • iOS-AQU - 21 - Fixing the Favorite Color Default State (2:37)
    • iOS-AQU - 22 - Hiding UIElements in Editing Mode (3:48)
    • iOS-AQU - 23 - Adding a Protocol to the TodoTableViewCell (4:36)
    • iOS-AQU - 24 - Implementing the TodoTableViewCellDelegate (2:29)
    • iOS-AQU - 25 - Completing a Todo (4:38)
    • iOS-AQU - 26 - Favorting a Todo (1:58)
    • iOS-AQU - 27 - Implementing titleForHeaderInSection (3:08)
    • iOS-AQU - 28 - Adding the UITableViewDelegate Extension and heightForHeaderInSection (3:12)
    • iOS-AQU - 29 - Implementing canEditRowAtIndexPath (1:31)
    • iOS-AQU - 30 - Extending our Seperator Lines (2:38)
    • iOS-AQU - 31 - Adding Footers to the TableView (4:18)
    • iOS-AQU - 32 - Removing the Delete Button during Editing (1:37)
    • iOS-AQU - 33 - Turn off Indent while Editing (1:18)
  • 146 UILongPressRecognizer
    • NS-APE - 1 - Introduction to UILongPressRecognizer (3:00)
    • NS-APE - 2 - Playing with UILongPressRecognizer (5:13)
    • NS-APE - 3 - Storyboarding UILongPressRecognizer (5:38)
  • 147 Bitlist Customizing the TodosViewController Part 4
    • iOS-AQV - 34 - Adding a UILongPressGestureRecognizer (4:35)
  • 148 UINavigationController
    • NS-APL - 2 - Storyboarding UINavigationController Part 1 (5:50)
    • NS-APL - 3 - Storyboarding UINavigationController Part 2 (3:37)
  • 149 Bitlist Setting up the TodoViewController Part 1
    • iOS-APN - 35 - Creating the TodoViewController (3:49)
    • iOS-APN - 36 - Adding a TableView to the TodoViewController (1:55)
    • iOS-APN - 37 - Adding IBOutlets and IBActions (2:19)
    • iOS-APN - 38 - Adding the UITableViewDataSource to the TodoViewController (1:46)
    • iOS-APN - 39 - Adding the UITableViewDelegate to the TodoViewController (2:28)
  • 150 UIFont
    • NS-APP - 1 - Introduction to UIFont (1:16)
    • NS-APP - 2 - Playing with UIFont (4:48)
    • NS-APP - 3 - Storyboarding UIFont (3:47)
  • 151 NSIndexPath
    • NS-AOW - 1 - Introduction to NSIndexPath (1:35)
    • NS-AOW - 2 - Playing with NSIndexPath (3:18)
  • 152 Bitlist Setting up the TodoViewController Part 2
    • iOS-AQW - 40 - Setting up the First Row in the First Section (8:31)
    • iOS-AQW - 41 - Setting up the Second Row in the First Section (3:58)
    • iOS-AQW - 42 - Setting up the First Row in the Second Section (6:50)
    • iOS-AQW - 43 - Updating numberOfRowsInSection (1:21)
    • iOS-AQW - 44 - Initiating to Segue to the TodoViewController (2:24)
  • 153 Type Casting Introduction
    • SPL-ALB - 1 - Type Casting Introduction (2:02)
  • 154 SPL-ALC - Defining a Class Hierarchy for Type Casting
    • SPL-ALC - 1 - Defining a Class Hierarchy for Type Casting Introduction (1:04)
    • SPL-ALC - 2 - Playing with Defining a Class Hierarchy for Type Casting (4:19)
  • 155 Checking Type
    • SPL-ALD - 1 - Checking Type Introduction (0:52)
    • SPL-ALD - 2 - Playing with Checking Type Part 1 (4:18)
    • SPL-ALD - 3 - Playing with Checking Type Part 2 (5:07)
  • 156 Downcasting
    • SPL-ALE - 1 - Downcasting Introduction (2:01)
    • SPL-ALE - 2 - Playing with Downcasting (5:43)
  • 157 Type Casting for Any
    • SPL-ALH - 1 - Introduction to Any (1:44)
    • SPL-ALH - 2 - Playing with Any (10:41)
    • SPL-ALH - 3 - Any Challenge (0:31)
    • SPL-ALH - 4 - Any Solution (4:03)
  • 158 Bitlist Setting up the TodoViewController Part 3
    • iOS-AQX - 45 - Setting up prepareForSegue in the TodosViewController (6:52)
    • iOS-AQX - 46 - Showing off our Todo in the TodoViewController (2:03)
  • 159 UIGestureRecognizer
    • NS-APG - 1 - Introduction to UIGestureRecognizer (4:35)
  • 160 UISwipeGestureRecognizer
    • NS-APF - 1 - Introduction to UISwipeGestureRecognizer (1:45)
    • NS-APF - 2 - Playing with UISwipeGestureRecognizer (3:25)
    • NS-APF - 3 - Storyboarding UISwipeGestureRecognizer (3:50)
  • 161 Bitlist Setting up the TodoViewController Part 4
    • iOS-AQY - 47 - Swiping back to the TodosViewController (4:31)
    • iOS-AQY - 48 - Referencing the TodosViewController from the TodoViewController (3:57)
    • iOS-AQY - 49 - Completing a Todo from the TodoViewController (6:18)
    • iOS-AQY - 50 - Favorite a Todo from the TodoViewController (5:07)
    • iOS-AQY - 51 - Deleteing a Todo from the TodoViewController (1:37)
    • iOS-AQY - 52 - A Little UITableView Customization (2:23)
  • 162 NSCalendar
    • NS-AOU - 1 - NSCalendar Introduction (0:55)
    • NS-AOU - 2 - Playing with NSCalendar (3:45)
  • 163 UIDatePicker
    • NS-AOQ - 1 - Introduction to UIDatePicker (2:09)
    • NS-AOQ - 2 - Playing with UIDatePicker (7:38)
    • NS-AOQ - 3 - Playing with UIDatePicker Mode (2:56)
    • NS-AOQ - 4 - Storyboarding UIDatePicker Part 1 (3:47)
    • NS-AOQ - 5 - Storyboarding UIDatePicker Part 2 (4:08)
  • 164 Bitlist Custom Menus in the TodoViewController Part 1
    • iOS-APQ - 53 - Storyboarding the UIDatePicker View (4:23)
    • iOS-APQ - 54 - Creating the UIDatePickerView (2:59)
  • 165 Protocols Introduction
    • SPL-ALT - 1 - Protocols Introduction (3:12)
  • 166 Protocol Syntax
    • SPL-ALU - 1 - Protocol Syntax Introduction (2:03)
  • 167 Property Requirements
    • SPL-ALV - 1 - Property Requirements Introduction (1:27)
    • SPL-ALV - 2 - Playing with Property Requirements Part 1 (3:47)
    • SPL-ALV - 3 - Playing with Property Requirements Part 2 (8:47)
  • 168 Method Requirements
    • SPL-ALW - 1 - Method Requirements Introduction (1:24)
    • SPL-ALW - 2 - Playing with Method Requirements (6:16)
    • SPL-ALW - 3 - Method Requirements Challenge (1:01)
    • SPL-ALW - 4 - Method Requirements Solution (6:56)
  • 169 Protocols as Types
    • SPL-AMB - 1 - Protocols as Types Introduction (1:34)
    • SPL-AMB - 2 - Playing with Protocols as Types Part 1 (3:10)
    • SPL-AMB - 3 - Playing with Protocols as Types Part 2 (6:57)
  • 170 Delegation
    • SPL-AMC - 1 - Delegation Introduction (2:41)
    • SPL-AMC - 2 - Playing with Delegation Part 1 (4:50)
    • SPL-AMC - 3 - Playing with Delegation Part 2 (9:47)
    • SPL-AMC - 4 - Delegation Challenge (0:37)
    • SPL-AMC - 5 - Delegation Solution (8:29)
  • 171 Protocol Composition
    • SPL-AMI - 1 - Protocol Composition
    • SPL-AMI - 2 - Protocol Composition Challenge
    • SPL-AMI - 3 - Protocol Composition Solution
  • 172 Checking for Protocol Conformance
    • SPL-AMJ - 1 - Checking for Protocol Conformance
    • SPL-AMJ - 2 - Checking for Protocol Conformance Challenge
    • SPL-AMJ - 3 - Checking for Protocol Conformance Solution
  • 173 Optional Protocol Requirements
    • SPL-AMK - Optional Protocol Requirements
  • 174 Bitlist Custom Menus in the TodoViewController Part 2
    • iOS-AQZ - 55 - Implementing the UIDatePickerView (3:01)
    • iOS-AQZ - 56 - Adding the UIDatePickerView as a Subview (4:03)
    • iOS-AQZ - 57 - Conforming to the UIDatePickerView Delegate (1:38)
    • iOS-AQZ - 58 - Creating presentPicker helper Function (4:04)
  • 175 SPL-AFI - Switch
    • SPL-AFI - 1 - Switch Introduction (2:08)
    • SPL-AFI - 2 - Playing with Switch Part 1 (2:23)
    • SPL-AFI - 3 - Playing with Switch Part 2 (2:03)
    • SPL-AFI - 4 - Playing with Switch Part 3 (4:41)
    • SPL-AFI - 5 - Playing with Switch Part 4 (2:36)
    • SPL-AFI - 6 - Playing with Switch Part 5 (3:26)
  • 176 Bitlist Custom Menus in the TodoViewController Part 3
    • iOS-ARA - 59 - Implementing didSelectRowAtIndexPath (4:29)
    • iOS-ARA - 60 - Dismiss Picker (4:03)
    • iOS-ARA - 61 - Implementing RemovePressed and donePressed (2:30)
    • iOS-ARA - 62 - Implementing datePIckerValueChanged (1:35)
  • 177 UIPickerView
    • NS-APD - 1 - Introduction to UIPickerView (1:51)
    • NS-APD - 2 - Playing with UIPickerView (3:45)
    • NS-APD - 3 - Storyboarding UIPickerView Part 1 (2:11)
    • NS-APD - 4 - Storyboarding UIPickerView Part 2 (4:15)
  • 178 Bitlist Custom Menus in the TodoViewController Part 4
    • iOS-ARB - 63 - Storyboarding the Repeat Picker View (1:35)
    • iOS-ARB - 64 - Creating the RepeatView Class (2:38)
    • iOS-ARB - 65 - Conforming to the UIPickerViewDataSource and adding awakeFromNib (2:59)
    • iOS-ARB - 66 - Conforming to the UIPickerViewDelegate (2:14)
    • iOS-ARB - 67 - Creating the RepeatViewDelegate (3:10)
    • iOS-ARB - 68 - Adding the RepeatPickerView as a Subview (2:33)
    • iOS-ARB - 69 - Conforming to the RepeatPickerViewDelegate (3:20)
    • iOS-ARB - 70 - Storyboarding the Reminder Picker View (1:36)
    • iOS-ARB - 71 - Adding the ReminderPickerView as a Subview (1:33)
    • iOS-ARB - 72 - Updating our Functions for the ReminderPickerView (2:06)

View Full Curriculum


Access
Lifetime
Content
9 hours
Lessons
122

The Bitfountain Immersive iOS Design Course

The Intersection of Design & App Development is This UI/UX Course

By Bitfountain | in Online Courses

Whether you're a total beginner to app development, a pro who wants to hone your style, or a graphic designer interested in trying UI/UX design, you have a ton to gain from this course. Using Bohemian Coding's Sketch as a primary tool, you'll design a complete iOS app interface, and infuse your own style and preferences to make your app uniquely yours. This one is as fun as it is functional.

  • Access 122 lectures & 9 hours of content
  • Complete simple but unique design projects to master the basics of Sketch
  • Learn the UI Foundations you need to design a complete app from start to finish
  • Discover the basics of color & color psychology in UI/UX design
  • Design popular app icons from Pinterest to Instagram in your own vision
  • Learn the basics of typography in UI/UX design
Khari is a graphic artist and designer from Boston, MA. After completing his degree in Sociology at Wesleyan University he moved his life to Paris where he continues to live. Khari maintains a firm connection with both tactile and digital media, constantly experimenting and pushing the limits of UI/UX design. Portfolio: https://dribbble.com/kh4ri For more details on this course and instructor, click here.

Details & Requirements

  • Length of time users can access this course: lifetime
  • Access options: web streaming, mobile streaming
  • Certification of completion not included
  • Redemption deadline: redeem your code within 30 days of purchase
  • Experience level required: all levels
  • Students must download the free trial or paid version of Sketch App: https://www.sketchapp.com/

Compatibility

  • Internet required

Course Outline

  • 1 Sketch Basics
    • DE-BAS - 1 - Introduction (0:49)
    • DE-BAS - 2 - Get Sketch (2:34)
    • DE-BAS - 3 - Cloud Icon (9:24)
    • DE-BAS - 5 - Raspberry "R" (Part 2) (7:46)
    • DE-BAS - 6 - Floating Sphere (1:45)
  • 2 Sketch Reference
    • DE-REF - 1 - Artboards (1:21)
    • DE-REF - 2 - Layers List (1:37)
    • DE-REF - 3 - Customizing Toolbar (1:30)
    • DE-REF - 4 - The Vector Tool (3:34)
    • DE-REF - 5 - Bezier Curves (4:03)
    • DE-REF - 6 - Shapes (5:16)
    • DE-REF - 7 - Moving Layers Forward and Backward (0:35)
    • DE-REF - 8 - Borders (2:50)
    • DE-REF - 9 - Fills (2:25)
    • DE-REF - 10 - Union, Subtract, Intersect, and Difference (2:27)
    • DE-REF - 11 - Text (1:33)
    • DE-REF - 12 - Adding Images (0:40)
    • DE-REF - 13 - Creating and Using Symbols (2:47)
    • DE-REF - 14 - Make Grid Tool (0:37)
    • DE-REF - 15 - Transform Tool (0:33)
    • DE-REF - 16 - Rotate Layers (0:57)
    • DE-REF - 17 - Rotate Copies Tool (1:05)
    • DE-REF - 18 - Using Masks (1:51)
    • DE-REF - 19 - Flip Tool (0:32)
    • DE-REF - 20 - Sketch Mirror (1:35)
    • DE-REF - 21 - Exporting (3:03)
    • DE-REF - 22 - Adding Fonts (1:04)
    • DE-BAS - 4 - Raspberry "R" (Part 1) (6:13)
  • 3 UI Foundations Introduction
    • DE-UIF - 1 - Noodle Intro (3:12)
    • DE-UIF - 2 - UI and UX (1:01)
  • 4 Noodle App
    • DE-UIF - 3 - Icon Intro (3:56)
    • DE-UIF - 4 - Noodle Icon Design (11:36)
    • DE-UIF - 5 - Launch Screen (4:16)
    • DE-UIF - 6 - Signup/Login Screen (12:50)
    • DE-UIF - 7 - Recipe Feed (6:01)
    • DE-UIF - 8 - Filters Intro (1:50)
    • DE-UIF - 9 - Feed Design (2:58)
    • DE-UIF - 10 - Tab Bar (10:37)
    • DE-UIF - 11 - Search Screen (8:23)
    • DE-UIF - 12 - Search (keyboard) (3:07)
    • DE-UIF - 13 - Results Screen (13:03)
    • DE-UIF - 14 - Recipe Highlight (4:20)
  • 5 Noodle Challenge
    • DE-UIF - 15 - Noodle Challenge
  • 6 Icon Module
    • DE-ICO - 1 - Icon Module Intro (0:41)
    • DE-ICO - 2 - How important is a good icon? (1:17)
    • DE-ICO - 3 - What makes a good icon? (2:54)
    • DE-ICO - 4 - Color (4:55)
    • DE-ICO - 5 - Apple Music Icon (2:49)
    • DE-ICO - 6 - Clarity (1:34)
    • DE-ICO - 7 - Texture (2:06)
    • DE-ICO - 8 - Instagram Icon Setup (4:03)
    • DE-ICO - 9 - Instagram Lens (12:11)
    • DE-ICO - 10 - Instagram Camera Body (1:46)
    • DE-ICO - 11 - Instagram Leather Texture (1:35)
    • DE-ICO - 12 - Instagram Secondary Camera Lens (3:39)
    • DE-ICO - 13 - Instagram Icon Final Touches (6:06)
    • DE-ICO - 14 - Text and Pinterest (3:40)
    • DE-ICO - 15 - Infuse Icon (6:58)
  • 7 Icon Assignment
    • DE-ICO - 16 - Spinrilla Assignment (1:11)
  • 8 Color
    • DE-COL - 1 - Intro (1:05)
    • DE-COL - 2 - Color Vocabulary (7:19)
    • DE-COL - 3 - Human Interface Guidelines (6:24)
    • DE-COL - 4 - Color Choices (4:31)
    • DE-COL - 5 - Exercises (2:14)
  • 9 Typography
    • DE-TYP - 1 - Intro (1:17)
    • DE-TYP - 2 - Initial Terminology (5:24)
    • DE-TYP - 3 - Letter Spacing (6:01)
    • DE-TYP - 4 - Body Text Terminology (3:29)
    • DE-TYP - 5 - iOS Human Interface Guidelines (5:58)
  • 10 Typography Exercises
    • DE-TYP1 - 1 - Typography Exercises (0:55)
  • 11 UI Interaction Prototyping
    • DE-FRM1 - 1 - Framer.js Introduction (6:45)
  • 12 Opening Framer Studio
    • DE-FRM2 - 1- Opening Framer Studio (7:29)
    • DE-FRM2 - 2 - Tour of Framer Studio (11:40)
  • 13 Drawing With Code
    • DE-FRM - 1 - Shape Layers (9:56)
    • DE-FRM - 2 - Image Layers (4:57)
  • 14 Click Events
    • DE-FRM4 - 1 - Click Events (2:41)
    • DE-FRM4 - 2 - Adding Layers (6:18)
    • DE-FRM4 - 3 - Adding States (2:55)
    • DE-FRM4 - 4 - Adding animationOptions (1:57)
    • DE-FRM4 - 5 - Continuing with States and animationOptions (2:05)
    • DE-FRM4 - 6 - Activating our States (4:56)
    • DE-FRM4 - 7 - States and animationOptions for Final Layer (3:36)
    • DE-FRM4 - 8 - Click Events Recap (3:00)
  • 15 Importing Layers From Sketch Beta
    • DE-FRM5 - 1 - Preparing Layers (8:20)
    • DE-FRM5 - 2 - Importing Layers From Sketch Beta (3:22)
    • DE-FRM5 - 3 - Manipulating Sketch Layers in Framer (8:08)
    • DE-FRM5 - 4 - Accessing Other Artboards (3:58)
  • 16 Weather App
    • DE-FRM6 - 1 - Weather App (1:35)
    • DE-FRM6 - 2 - LaParis Sketch File (4:20)
    • DE-FRM6 - 3 - Importing Sketch Beta File into Framer (1:08)
    • DE-FRM6 - 4 - Remember Layer Positions in Code (4:20)
    • DE-FRM6 - 5 - Repositioning Items (2:45)
    • DE-FRM6 - 6 - Setting Alternate Origin Positions for LA (5:04)
    • DE-FRM6 - 7 - Setting Alternate Origin Positions for Paris (7:53)
    • DE-FRM6 - 8 - Creating Code Shortcuts (3:36)
    • DE-FRM6 - 9 - Adding the "Start" Artboard (4:19)
    • DE-FRM6 - 10 - Animating the "Start" Screen (3:28)
    • DE-FRM6 - 11 - Animating LA Layers Back to Original Positions (8:21)
    • DE-FRM6 - 12 - Animation from LA to Paris (6:18)
    • DE-FRM6 - 13 - Animating Paris Layers (3:19)
    • DE-FRM6 - 14 - Reverse Animation (5:02)
    • DE-FRM6 - 15 - Weather App Completion (5:01)
  • 17 4PinkBubbles
    • DE-FRM7 - 1 - 4PinkBubbles (5:51)
    • DE-FRM7 - 2 - Looping Animation (7:23)
    • DE-FRM7 - 3 - Finishing the Animation (6:18)
  • 18 Toggle Robot
    • DE-FRM8 - 1 - Toggle Robot (2:22)
    • DE-FRM8 - 2 - Importing from Sketch (2:30)
    • DE-FRM8 - 3 - Make Layer Draggable (2:19)
    • DE-FRM8 - 4 - Adding Curve Shortcuts (2:13)
    • DE-FRM8 - 5 - Animation Time (7:45)
  • 19 Carousel Onboarding Clone
    • DE-FRM9 - 1 - Carousel Onboarding Clone (3:07)
    • DE-FRM9 - 2 - CarouselClone Sketch File (6:22)
    • DE-FRM9 - 3 - Before we Begin (1:40)
    • DE-FRM9 - 4 - Initial Document Setup (6:34)
    • DE-FRM9 - 5 - Creating Shortcuts (1:24)
    • DE-FRM9 - 6 - Setting Initial Positions (6:16)
    • DE-FRM9 - 7 - Swipe Indicator Animation (9:43)
    • DE-FRM9 - 8 - Reviewing The SwipeGo Animation (4:32)
    • DE-FRM9 - 9 - Second View Animation (8:03)
    • DE-FRM9 - 10 - Continue Button Transition (8:19)
    • DE-FRM9 - 11 - Next Button Transition (8:22)
    • DE-FRM9 - 12 - Finishing Carousel Onboarding Clone (2:23)

View Full Curriculum


Access
Lifetime
Content
11 hours
Lessons
209

The Bitfountain Core Data Immersive Course

Prepare Your Apps for the Apple Store by Learning the Core Data Stack

By Bitfountain | in Online Courses

To release an app to the public through the Apple Store, you're going to need a strong understanding of Core Data, the object graph and persistence framework that allows a device to efficiently manage locally stored data. Through creating your own Core Data stack, you'll gain an understanding of how to manage data models and relationships while picking up some new Swift Language features. This is an essential course to help you start monetizing your app in the Apple marketplace.

  • Access 209 lectures & 11 hours of content
  • Customize your Core Data stack & understand how it is used in building production apps
  • Review & practice advanced Swift Language features
  • Learn the best practices for handling errors
  • Build complex data structures w/ relationships
  • Optimize a project w/ NSFetchedResultsController
Eliot Arntz regularly teaches iOS development classes and workshops at General Assembly and guest lectures for companies and development boot camps around NYC. He also taught the inaugural class for Coalition for Queens which focused on increasing diversity in iOS development. He also coaches students in a one-on-one environment with a focus on transitioning to full time development. Eliot cofounded and organizes the iOS Office Hours meetup NYC. In his free time he works as a contractor for startups focusing on agile development. For more details on this course and instructor, click here.

Details & Requirements

  • Length of time users can access this course: lifetime
  • Access options: web streaming, mobile streaming
  • Certification of completion not included
  • Redemption deadline: redeem your code within 30 days of purchase
  • Experience level required: advanced

Compatibility

  • Internet required

Course Outline

  • 1 Setting Up Our Project
    • iOS-APV - 1 - Setting up our Project (2:29)
    • iOS-APV - 2 - Adding a Model (1:17)
    • iOS-APV - 3 - Initializing our Model (6:23)
    • iOS-APV - 4 - Adding a storesDirectory and localStoreURL (5:21)
    • iOS-APV - 5 - Adding a Persistent Store Coordinator (4:56)
    • iOS-APV - 6 - Make a Singleton (1:31)
    • iOS-APV - 7 - Create our First Context (3:46)
  • 2 NSBundle
    • NS-AQF - 1 - NSBundle Introduction (1:58)
    • NS-AQF - 2 - Playing with NSBundle (6:22)
  • 3 NSURL Introduction
    • NS-AQE - 1 - NSURL Introduction (3:46)
    • NS-AQE - 2 - Playing with NSURL (5:52)
  • 4 NSManagedObject Introduction
    • NS-AQP - 1 - NSManagedObject Introduction (3:27)
    • NS-AQP - 2 - Playing with NSManagedObject (3:32)
  • 5 Playing with NSManagedObjectModel
    • NS-AQG - 1 - NSManagedObjectModel Introduction (4:22)
    • NS-AQG - 2 - Playing with NSManagedObjectModel (3:11)
  • 6 Setup Project
    • iOS-ARJ - 1 - Setup Project (1:47)
    • iOS-ARJ - 2 - Create Entity (3:06)
    • iOS-ARJ - 3 - Add Attributes (3:49)
    • iOS-ARJ - 4 - Primitive Data Types (2:09)
  • 7 Lazy Stored Properties Introduction
    • SPL-AHV - 1 - Lazy Stored Properties Introduction (2:10)
    • SPL-AHV - 2 - Playing with Lazy Stored Properties (5:04)
    • SPL-AHV - 3 - Lazy Stored Properties Challenge (0:47)
    • SPL-AHV - 4 - Lazy Stored Properties Solution (4:52)
  • 8 Adding a Model
    • iOS-ARN - 1 - Adding a Model (1:17)
    • iOS-ARN - 2 - Initializing our Model (6:23)
  • 9 NSSearchPathDirectory Introduction
    • NS-AQN - 1 - NSSearchPathDirectory Introduction (1:12)
    • NS-AQN - 2 - Playing with NSSearchPathDirectory (2:21)
  • 10 NSSearchPathDomainMask Introduction
    • NS-AQO - 1 - NSSearchPathDomainMask Introduction (1:25)
    • NS-AQO - 2 - Playing with NSSearchPathDomainMask (1:45)
  • 11 NSFileManager Introduction
    • NS-AQH - 1 - NSFileManager Introduction (2:30)
    • NS-AQH - 2 - Playing with NSFileManager (3:18)
  • 12 Adding a storesDirectory and localStoreURL
    • iOS-ARO - 1 - Adding a storesDirectory and localStoreURL (5:21)
  • 13 Global and Local Variables Introduction
    • SPL-AIB - 1 - Global and Local Variables Introduction (1:45)
    • SPL-AIB - 2 - Playing with Global and Local Variables (11:54)
    • SPL-AIB - 3 - Global and Local Variables Challenge (1:14)
    • SPL-AIB - 4 - Global and Local Variables Solution (6:41)
  • 14 Type Property Syntax Introduction
    • SPL-AID - 1 - Type Property Syntax Introduction (2:06)
    • SPL-AID - 2 - Playing with Type Property Syntax (3:29)
    • SPL-AID - 3 - Type Property Syntax Challenge (0:30)
    • SPL-AID - 4 - Type Property Syntax Solution (1:09)
  • 15 Querying and Setting Type Properties Introduction
    • SPL-AIE - 1 - Querying and Setting Type Properties Introduction (1:05)
    • SPL-AIE - 2 - Playing with Querying and Setting Type Properties (4:29)
    • SPL-AIE - 3 - Type Properties and Computed Properties (4:28)
    • SPL-AIE - 4 - Querying and Setting Type Properties Challenge (0:34)
    • SPL-AIE - 5 - Querying and Setting Type Properties Solution (2:30)
  • 16 NSPersistentStoreCoordinator Introduction
    • NS-AQI - 1 - NSPersistentStoreCoordinator Introduction (2:59)
    • NS-AQI - 2 - Playing with NSPersistentStoreCoordinator (5:34)
  • 17 Error Handling Introduction
    • SPL-APW - 1 - Error Handling Introduction (2:24)
  • 18 Representing and Throwing Errors Introduction
    • SPL-APX - 1 - Representing and Throwing Errors Introduction (2:44)
    • SPL-APX - 2 - Playing with Representing and Throwing Errors (1:44)
    • SPL-APX - 3 - Representing and Throwing Errors Challenge (0:20)
    • SPL-APX - 4 - Representing and Throwing Errors Solution (0:58)
  • 19 Handling Errors Introduction
    • SPL-APY - 1 - Handling Errors Introduction (2:46)
  • 20 Propagating Errors Using Throwing Functions Introduction
    • SPL-APZ - 1 - Propagating Errors Using Throwing Functions Introduction (2:58)
    • SPL-APZ - 2 - Playing with Propagating Errors Using Throwing Functions (4:44)
    • SPL-APZ - 3 - Propagating Errors Using Throwing Functions Challenge (0:26)
    • SPL-APZ - 4 - Propagating Errors Using Throwing Functions Solution (2:50)
  • 21 Handling Errors Using Do-Catch Introduction
    • SPL-AQA - 1 - Handling Errors Using Do-Catch Introduction (4:06)
    • SPL-AQA - 2 - Playing with Handling Errors Using Do-Catch (6:26)
    • SPL-AQA - 3 - XCode Handling Errors Using Do-Catch (4:48)
    • SPL-AQA - 4 - Handling Errors Using Do-Catch Challenge (0:45)
    • SPL-AQA - 5 - Handling Errors Using Do-Catch Solution (5:45)
  • 22 The Guard Statement Introduction
    • SPL-ARI - 1 - The Guard Statement Introduction (5:59)
    • SPL-ARI - 2 - Playing with the Guard Statement Part 1 (2:11)
    • SPL-ARI - 3 - Playing with the Guard Statement Part 2 (3:55)
    • SPL-ARI - 4 - Playing with the Guard Statement Part 3 (5:32)
    • SPL-ARI - 5 - The Guard Statement Challenge (0:18)
    • SPL-ARI - 6 - The Guard Statement Solution (7:06)
  • 23 Adding a Persistent Store Coordinator
    • iOS-ARP - 1 - Adding a Persistent Store Coordinator (4:56)
  • 24 Make a Singleton
    • iOS-ARR - 1 - Make a Singleton (1:31)
  • 25 NSFetchRequest Introduction
    • NS-AQL - 1 - NSFetchRequest Introduction (2:08)
    • NS-AQL - 2 - Playing with NSFetchRequest (3:34)
  • 26 NSSortDescriptor
    • NS-AQM - 1 - NSSortDescriptor Introduction (2:09)
    • NS-AQM - 2 - Playing with NSSortDescriptor (2:47)
  • 27 NSManagedObjectContext
    • NS-AQJ - 1 - NSManagedObjectContext Introduction (2:20)
    • NS-AQJ - 2 - Playing with NSManagedObjectContext (1:58)
    • NS-AQJ - 3 - NSManagedObjectContext insertObject (3:18)
    • NS-AQJ - 4 - NSManagedObjectContext deleteObject (2:48)
    • NS-AQJ - 5 - NSManagedObjectContext save (3:44)
    • NS-AQJ - 6 - NSManagedObjectContext executeFetchRequest (3:37)
  • 28 Core Data Stack Create our First Context
    • iOS-ARQ - 1 - Create our First Context (3:46)
  • 29 Core Data CRUD
    • iOS-ARK - 1 - Setup Project (3:22)
    • iOS-ARK - 2 - Create People (6:57)
    • iOS-ARK - 3 - Fetch People (5:39)
    • iOS-ARK - 4 - Update People (3:18)
    • iOS-ARK - 5 - Delete People (3:38)
  • 30 UIAlertController
    • NS-APO - 1 - Introduction to UIAlertController (1:57)
    • NS-APO - 2 - Playing with UIAlertController (2:35)
    • NS-APO - 3 - Storyboarding UIAlertController Part 1 (3:11)
    • NS-APO - 4 - Storyboarding UIAlertController Part 2 (6:43)
  • 31 iOS-ARL - Core Data UITableView
    • iOS-ARL - 1 - Setup our Project (Optional)
    • iOS-ARL - 2 - Add the Core Data Stack and Model (0:56)
    • iOS-ARL - 3 - Create User Entity (1:08)
    • iOS-ARL - 4 - Passing the NSManagedObjectContext (5:33)
    • iOS-ARL - 5 - Creating Users (4:45)
    • iOS-ARL - 6 - Fetching users (2:21)
    • iOS-ARL - 7 - Deleting Users (1:44)
  • 32 NSFetchedResultsController
    • NS-AQK - 1 - NSFetchedResultsController Introduction (3:14)
    • NS-AQK - 2 - Playing with NSFetchedResultsController (4:30)
  • 33 Computed Properties
    • SPL-AHX - 1 - Computed Properties Introduction (0:53)
    • SPL-AHX - 2 - Playing with Computed Properties (2:12)
    • SPL-AHX - 3 - Computed Properties Challenge (0:36)
    • SPL-AHX - 4 - Computed Properties Solution (1:35)
  • 34 Core Data NSFetchedResultsController
    • iOS-ARM - 1 - Setup our Project (3:43)
    • iOS-ARM - 2 - Initialize the NSFetchedResultsController (3:24)
    • iOS-ARM - 3 - Update the UITableView's Data Source (2:55)
    • iOS-ARM - 4 - Save New Users (2:40)
    • iOS-ARM - 5 - Fetch Results (1:22)
    • iOS-ARM - 6 - Insert with NSFetchedResultsController (3:39)
    • iOS-ARM - 7 - Delete with NSFetchedResultsController (4:43)
    • iOS-ARM - 8 - Add User Editing (8:28)
    • iOS-ARM - 9 - Update with NSFetchedResultsController (5:43)
    • iOS-ARM - 10 - Add Sections (5:17)
    • iOS-ARM - 11 - Insert and Delete Sections (3:06)
  • 35 Core Data Relationships
    • iOS-ARS - 1 - Setup our Project Part 1 (Optional) (9:31)
    • iOS-ARS - 2 - Setup our Project Part 2 (Optional) (10:46)
    • iOS-ARS - 3 - Setup our Project Part 3 (Optional) (10:38)
    • iOS-ARS - 4 - Setup our Project Part 4 (Optional) (13:46)
    • iOS-ARS - 5 - Seeding Data (6:05)
    • iOS-ARS - 6 - add author property (3:54)
    • iOS-ARS - 7 - add author entity and relationships (6:24)
    • iOS-ARS - 8 - Add Inverse (4:04)
    • iOS-ARS - 9 - Search Relationship (11:05)
    • iOS-ARS - 10 - Change Relationship to Many (7:15)
    • iOS-ARS - 11 - Change Relationship to Many-to-Many Part 1 (4:38)
    • iOS-ARS - 12 - Change Relationship to Many-to-Many Part 2 (4:14)
    • iOS-ARS - 13 - Change Relationship to Many-to-Many Part 3 (5:37)
    • iOS-ARS - 14 - Add Reflexive Many to Many Part 1 (7:29)
    • iOS-ARS - 15 - Add Reflexive Many to Many Part 2 (10:49)
    • iOS-ARS - 16 - A Note on Adding the Author Object
  • 36 Core Data Entity Inheritance Setup
    • iOS-AUP - 1 - Entity Inheritance Intro (0:43)
    • iOS-AUP - 2 - Entities (1:54)
    • iOS-AUP - 3 - Subentities (3:18)
    • iOS-AUP - 4 - Entity Inheritance Alternative (1:59)
    • iOS-AUP - 5 - Create Project (1:17)
  • 37 Core Data Entity Inheritance Entities
    • iOS-AUQ - 1 - Creating the Parent Entity (1:39)
    • iOS-AUQ - 2 - Creating the Common Attributes (0:57)
    • iOS-AUQ - 3 - Creating the Land Entity (1:22)
    • iOS-AUQ - 4 - Creating the Water Entity (0:48)
    • iOS-AUQ - 5 - Creating Subentities (1:08)
    • iOS-AUQ - 6 - Creating NSManagedObjects (2:13)
  • 38 Core Data Entity Inheritance Setup View Controller
    • iOS-AUR - 1 - Adding CDHelper (0:58)
    • iOS-AUR - 2 - Setting up AppDelegate (2:01)
    • iOS-AUR - 3 - Setting up the ViewController (0:40)
  • 39 Core Data Entity Inheritance Setup UI
    • iOS-AUS - 1 - Adding UIButton and UILabel (2:47)
    • iOS-AUS - 2 - Connecting the UI Elements (1:33)
  • 40 Core Data Entity Inheritance Core Data Functions
    • iOS-AUT - 1 - Create Seed Data Method (4:56)
    • iOS-AUT - 2 - Add Water Animals (4:37)
    • iOS-AUT - 3 - Run the App to Add Data (1:26)
  • 41 Core Data Entity Inheritance Fetching Data
    • iOS-AUV - 1 - Create the fetchAnimals Method (5:19)
    • iOS-AUV - 2 - Fetching Some Data (1:08)
    • iOS-AUV - 3 - Create the updateUI Method (2:32)
    • iOS-AUV - 4 - Updating the UI (1:29)
    • iOS-AUV - 5 - Refactoring the Prints (4:04)
  • 42 Core Data Entity Inheritance Filtering Fetch Requests
    • iOS-AUW - 1 - NSPredicate Intro (0:44)
    • iOS-AUW - 2 - Retrieving Dorsal Fins Only (2:15)
    • iOS-AUW - 3 - Filter Subentities (1:28)
    • iOS-AUW - 4 - Retrieving Only 2-Legged Animals (1:14)
  • 43 NSManagedObjectContext Notifications Setup (optional)
    • iOS-AUX - 1 - NSManagedObjectContext Notification Intro (0:43)
    • iOS-AUX - 2 - Create Project (Optional) (1:05)
    • iOS-AUX - 3 - Create the Model and Entity (Optional) (1:52)
    • iOS-AUX - 4 - Add CDHelper File (Optional) (0:41)
    • iOS-AUX - 5 - Edit ViewController to Add Context Variable (Optional) (0:47)
    • iOS-AUX - 6 - Edit AppDelegate to Use CDHelper File (Optional) (2:02)
    • iOS-AUX - 7 - Setting Up the UI (Optional) (2:22)
    • iOS-AUX - 8 - Connecting the UI (Optional) (1:21)
  • 44 NSManagedObjectContext Notifications Methods
    • iOS-AUY - 1 - Create the createData Method (4:15)
    • iOS-AUY - 2 - Run the App to Create Data (0:39)
    • iOS-AUY - 3 - Making Sure We Have Data (2:55)
    • iOS-AUY - 4 - Create the fetchBikes Method (3:45)
    • iOS-AUY - 5 - Update the UI (1:59)
    • iOS-AUY - 6 - Update UI Helper (1:40)
    • iOS-AUY - 6.5 - Calling updateUI in viewDidLoad (1:05)
    • iOS-AUY - 7 - Random String (2:35)
    • iOS-AUY - 8 - Changing Property Values (2:41)
    • iOS-AUY - 9 - Seeing Our Property Change (0:58)
    • iOS-AUY - 10 - Saving to Core Data Method (1:51)
    • iOS-AUY - 11 - Run the App and Save Data (0:44)
  • 45 NSManagedObjectContext Notifications
    • iOS-AUZ - 1 - Our First NSNotification (2:06)
    • iOS-AUZ - 2 - Method Called by NSNotification (1:25)
    • iOS-AUZ - 3 - Listening for a Change (2:09)
    • iOS-AUZ - 4 - Method Called by a Change (4:11)
    • iOS-AUZ - 4.5 - userInfo (1:23)
    • iOS-AUZ - 5 - Run the App and Listen for a Change (0:45)
    • iOS-AUZ - 6 - The Will Save NSNotification (3:08)
    • iOS-AUZ - 7 - Data Was Saved NSNotification (2:51)
    • iOS-AUZ - 8 - Removing Observers (Extra) (2:42)
  • 46 Multiple Managed Object Contexts Intro
    • iOS-AVA - Multiple Managed Object Contexts Intro
  • 47 Multiple Managed Object Contexts Setup
    • iOS-AVQ - 1 - Setup Intro (1:48)
    • iOS-AVQ - 2 - User Interface (0:59)
    • iOS-AVQ - 3 - Methods (2:12)
    • iOS-AVQ - 4 - Run the App (0:41)
  • 48 Multiple Managed Object Contexts Main Context
    • iOS-AVR - 1 - Two Contexts Intro (3:02)
    • iOS-AVR - 2 - Add Item (4:59)
    • iOS-AVR - 3 - Add didChange NSNotification (3:51)
  • 49 Multiple Managed Object Contexts Syncing
    • iOS-AVS - 1 - Syncing Intro (1:19)
    • iOS-AVS - 2 - Create the Syncer Class (2:45)
    • iOS-AVS - 3 - Create the startSyncing Method (5:13)
    • iOS-AVS - 4 - Create the sendData Method (5:06)
    • iOS-AVS - 5 - Create the didSave Method Part 1 (2:37)
    • iOS-AVS - 6 - Create the didSave Method Part 2 (3:25)
    • iOS-AVS - 7 - Create the didSave Method Part 3 (2:35)
    • iOS-AVS - 8 - Instantiating the Syncer (2:11)
  • 50 Multiple Managed Object Contexts Running the App
    • iOS-AVT - 1 - Run the App (2:24)
    • iOS-AVT - 2 - Parting Thoughts (1:16)
  • 51 Multiple Managed Object Contexts Queues
    • iOS-AVU - 1 - Multiple Managed Object Contexts with Queues Intro (2:50)
    • iOS-AVU - 2 - Download Starter Project (0:51)
    • iOS-AVU - 3 - Setting the Background Queue (1:36)
    • iOS-AVU - 4 - Adding performBlock for Merge (1:52)
    • iOS-AVU - 5 - Adding performBlock for didSave (4:26)
    • iOS-AVU - 6 - Adding performBlock for updateUI (1:32)
    • iOS-AVU - 7 - A note about Main Queue Methods (4:51)
    • iOS-AVU - 8 - Running the App (1:40)

View Full Curriculum


Access
Lifetime
Content
13 hours
Lessons
289

Advanced iOS from Bitfountain: Create a WhatsApp Clone

Learn Advanced iOS Development Features & Build Your Very Own WhatsApp in This Top-Rated Course

By Bitfountain | in Online Courses

The final product may be called WhaleTalk, but it will look a whole lot like WhatsApp. In this course, you'll take advanced strides in iOS development while building a fully-functional chat app from scratch. You'll gain excellent coding experience and be able to apply course material to any future projects. Not to mention, show it to any potential employer to nail your next job interview.

  • Access 289 lectures & 13 hours of content 24/7
  • Construct a Contacts Framework to start group chats & import contacts
  • Create complex views to build out chat functionality beyond person to person
  • Learn how to model, update & read dynamic data
  • Discover how to keep multiple devices synced through the Cloud w/ Firebase
  • Understand how to persist data w/ Core Data
Eliot Arntz regularly teaches iOS development classes and workshops at General Assembly and guest lectures for companies and development boot camps around NYC. He also taught the inaugural class for Coalition for Queens which focused on increasing diversity in iOS development. He also coaches students in a one-on-one environment with a focus on transitioning to full time development. Eliot cofounded and organizes the iOS Office Hours meetup NYC. In his free time he works as a contractor for startups focusing on agile development. For more details on this course and instructor, click here.

Details & Requirements

  • Length of time users can access this course: lifetime
  • Access options: web streaming, mobile streaming
  • Certification of completion not included
  • Redemption deadline: redeem your code within 30 days of purchase
  • Experience level required: advanced, knowledge of Swift, Core Data, and Auto Layout are necessary

Compatibility

  • Internet required

Course Outline

  • 1 Intro
    • 1.1 - WhaleTalk Intro (1:27)
  • 2 Setup
    • iOS-ATV - 1 - WhaleTalk Setup (2:29)
    • iOS-ATV - 2 - WhaleTalk Add TableView (4:30)
  • 3 Add Data Source
    • iOS-ATW - 1 - WhaleTalk Add Data Source (2:26)
    • iOS-ATW - 2 - WhaleTalk Add Fake Data (2:44)
    • iOS-ATW - 3 - WhaleTalk Register Cell and Add Datasource (5:20)
  • 4 Add Cell Model & Bubble for Message
    • iOS-ATX - 1 - Add Cell Model (4:34)
    • iOS-ATX - 2 - Configure Cell Model (8:07)
    • iOS-ATX - 3 - Finish Configuring the Cell (1:58)
    • iOS-ATX - 4 - Add Image Asset (2:32)
    • iOS-ATX - 5 - Edit ChatViewController to Use New Cell (2:26)
  • 5 Incoming Messages
    • iOS-ATY - 1 - WhaleTalk Incoming Messages (2:36)
    • iOS-ATY - 2 - Add New Constraints Properties (1:49)
    • iOS-ATY - 3 - Function to Activate Constraints (2:12)
  • 6 Flip Bubble & Change Color
    • iOS-ATZ - 1 - Change Image Color (1:49)
    • iOS-ATZ - 2 - Make Bubble (5:06)
    • iOS-ATZ - 3 - coloredImage Function (6:26)
    • iOS-ATZ - 4 - Run the App (1:10)
  • 7 UITableView Customization
    • iOS-AUA - 1 - UITableView Stop Rows Highlighting (2:31)
    • iOS-AUA - 2 - UITableView Add Delegate Variable (0:44)
    • iOS-AUA - 3 - Distorted Bubble (1:29)
    • iOS-AUA - 4 - Fixing Distorted Bubble (3:01)
    • iOS-AUA - 5 - Constraint Bubble (4:23)
    • iOS-AUA - 6 - Activate Constraints (1:45)
    • iOS-AUA - 7 - Increase Row Height (1:18)
    • iOS-AUA - 8 - Remove Cell Separator (1:46)
    • iOS-AUA - 9 - Pad Text (1:28)
  • 8 Add Message Area
    • iOS-AUB - 1 - Add Message Area Constraints (3:30)
    • iOS-AUB - 2 - Add Message Field (3:06)
    • iOS-AUB - 3 - Add Constraints to UITextView and UIButton (3:26)
  • 9 Animating Message Area
    • iOS-AUC - 1 - Moving Message Area Intro (1:19)
    • iOS-AUC - 2 - Modifying Constraints (2:19)
    • iOS-AUC - 3 - Adding NSNotfication Listener (3:08)
    • iOS-AUC - 4 - Animate Message Area (7:38)
    • iOS-AUC - 5 - Run the App (1:03)
    • iOS-AUC - 6 - Adding UITapGestureRecognizer (2:06)
    • iOS-AUC - 7 - Add Method to Handle Tap (1:33)
    • iOS-AUC - 8 - Add New Observer (1:37)
    • iOS-AUC - 9 - Add Method to Handle Animation (1:34)
    • iOS-AUC - 10 - Adding Proper Calls Into Keyboard Methods (2:52)
    • iOS-AUC - 11 - Set Compression Resistance for sendButton (1:54)
  • 10 Add New Message
    • iOS-AUD - 1 - Create pressedButton Method (2:21)
    • iOS-AUD - 2 - Add Target to UIButton (2:00)
    • iOS-AUD - 3 - Show New Message (2:32)
    • iOS-AUD - 4 - Create scrollToBottom Function (3:14)
    • iOS-AUD - 5 - Scroll to Bottom on Start (1:48)
    • iOS-AUD - 6 - Refactor pressedSend Method (1:26)
    • iOS-AUD - 7 - Reset UITextView on Send (1:51)
    • iOS-AUD - 8 - Scroll to Bottom on Keyboard Show (1:28)
  • 11 Scroll to Bottom of Chat
    • iOS-AUM - 1 - Scroll to Bottom if Rows Exist (1:17)
  • 12 Add Timestamp to Model
    • iOS-AUN - 1 - Add a Date to the Message Class (0:45)
    • iOS-AUN - 2 - Add Timestamp to our Messages (3:04)
    • iOS-AUN - 3 - Update Messages Array (1:39)
    • iOS-AUN - 4 - Create addMessage Method (5:15)
    • iOS-AUN - 5 - Create getMessages Method (1:36)
    • iOS-AUN - 6 - Update UITableViewDataSource Methods (2:15)
    • iOS-AUN - 7 - Update UITableView Instance (1:19)
    • iOS-AUN - 8 - Add viewForHeaderInSection Method (3:16)
    • iOS-AUN - 9 - Setup Constraints for viewForHeaderInSection (3:29)
    • iOS-AUN - 10 - Setup Formatter for Header (3:10)
    • iOS-AUN - 11 - Adding a Footer for Spacing (1:45)
    • iOS-AUN - 12 - Update Scrolling (3:12)
  • 13 Core Data Message
    • iOS-AUO - 1 - Adding the Core Data Helper (2:00)
    • iOS-AUO - 2 - Setup Core Data (3:13)
    • iOS-AUO - 3 - Add a Model (0:53)
    • iOS-AUO - 4 - Create a Message NSManagedObject (2:08)
    • iOS-AUO - 5 - Adding an isIncoming attribute (1:58)
    • iOS-AUO - 6 - Updating with Message Entity (2:47)
    • iOS-AUO - 7 - Save and Retrieve Messages (3:26)
  • 14 Sort Dates and Messages
    • iOS-AVB - 1 - Sorting our Dates and Messages (4:52)
  • 15 Fix Sorting
    • iOS-AVZ - 1 - Fix Sorting for Messages (3:36)
  • 16 Add AllChatsViewController
    • iOS-AWA - 1 - Add an new_chat Asset (0:33)
    • iOS-AWA - 2 - Create Chat Model (3:04)
    • iOS-AWA - 3 - Create a lastMessage Computed Attribute (4:37)
    • iOS-AWA - 4 - Adjust Chat and Create MessageCell (3:18)
    • iOS-AWA - 5 - Add Labels to the ChatCell (4:13)
    • iOS-AWA - 6 - Add Constraints to the ChatCell (3:55)
    • iOS-AWA - 7 - Add ChatCell to the ChatViewController (1:19)
    • iOS-AWA - 8 - Create AllChatsViewController (1:02)
    • iOS-AWA - 9 - Add Attributes to the AllChatsViewController (2:15)
    • iOS-AWA - 10 - Begin Setting up AllChatsViewController (4:08)
    • iOS-AWA - 11 - Add Constraints (2:00)
    • iOS-AWA - 12 - Setup the Context (3:14)
    • iOS-AWA - 13 - Create and Call the fakeData Method (1:39)
    • iOS-AWA - 14 - Add a ConfigureCell Helper Method (3:17)
    • iOS-AWA - 15 - Add the UITableViewDataSource Extension (4:11)
    • iOS-AWA - 16 - Add the UITableViewDelegate Extension (2:28)
    • iOS-AWA - 17 - Begin Setting up the NSFetchedResultsControllerDelegate Extension (3:56)
    • iOS-AWA - 18 - Add didChangeObject and controllerDidChangeContent Methods (4:47)
    • iOS-AWA - 19 - Display the AllChatsViewController (2:20)
  • 17 Add NewChatViewController
    • iOS-AWB - 1 - Update the Contact Entity (1:17)
    • iOS-AWB - 2 - Add sortLetter Method to Contact (1:25)
    • iOS-AWB - 3 - Add fullName method to Contact (1:56)
    • iOS-AWB - 4 - Add fakeData Method (4:52)
    • iOS-AWB - 5 - Create NewChatViewController and Add Attributes (2:52)
    • iOS-AWB - 6 - Add TableView and Other Setup (5:37)
    • iOS-AWB - 7 - Add Context (3:42)
    • iOS-AWB - 8 - Add configureCell Method (1:42)
    • iOS-AWB - 9 - Add UITableViewDataSource Extension (4:29)
    • iOS-AWB - 10 - Add UITableViewDelegte Extension (1:55)
    • iOS-AWB - 11 - Begin Adding NSFetchedResultsController Extension (3:40)
    • iOS-AWB - 12 - Finish Adding the NSFetchedResultsController Delegate (4:52)
    • iOS-AWB - 13 - Initialize NewChatsViewController (2:09)
  • 18 Refactor NSFetchedResultsControllerDelegate
    • iOS-AWC - 1 - Create TableViewFetchedResultsDelegate (3:36)
    • iOS-AWC - 2 - Add controllerWillChangeContent and didChangeSection Methods (2:01)
    • iOS-AWC - 3 - Add didChangeObject Method (2:57)
    • iOS-AWC - 4 - Add controllerDidChangeContent Method (0:38)
    • iOS-AWC - 5 - AllChatsViewController Conform to the TableViewFetchedResultsDisplayer (3:10)
    • iOS-AWC - 6 - NewChatViewController Conform to the TableViewFetchedResultsDisplayer (2:18)
  • 19 Refactor TableView Constraints
    • iOS-AWD - 1 - Begin Refactor (3:48)
    • iOS-AWD - 2 - Complete Refactor (1:49)
  • 20 Insert Chat Object
    • iOS-AWE - 1 - Update Chat and Contact Models (1:40)
    • iOS-AWE - 2 - Create add Method (2:06)
    • iOS-AWE - 3 - Use add Method (1:41)
  • 21 Create New Chat
    • iOS-AWF - 1 - Add Chat to the ChatViewController (2:38)
    • iOS-AWF - 2 - Add Fixes for Local Constant (0:59)
    • iOS-AWF - 3 - Create ChatCreationDelegate (1:40)
    • IOS-AWF - 4 - Implement ChatCreationDelegate in the NewChatsViewController (1:35)
    • iOS-AWF - 5 - Implement ChatCreationDelegate in the AllChatsViewController (3:03)
    • iOS-AWF - 6 - Fix UI in the ChatViewController (4:01)
  • 22 Create Temporary Child Context for Chats
    • iOS-AWG - 1 - Create Child Context (2:18)
  • 23 Save Temporary Context
    • iOS-AWH - 1 - Add a NSNotification for NSManagedObjectContextObjectsDidChangeNotification (5:00)
    • iOS-AWH - 2 - Create checkTemporaryContext Method (2:50)
    • iOS-AWH - 3 - Clean up (1:50)
  • 24 Remove Observers on ChatViewController
    • iOS-AWI - 1 - Remove Observer (1:13)
  • 25 Add Message to Chat
    • iOS-AWJ - 1 - Add Message (0:55)
  • 26 Add Sender to Message
    • iOS-AWK - 1 - Update Message and Contact Models (2:00)
    • iOS-AWK - 2 - Refactor the isIncoming Method (0:52)
    • iOS-AWK - 3 - Another Quick Refactor (0:34)
  • 27 Populate ChatCell with Data
    • iOS-AWL - 1 - Displaying Data in the ChatCell (3:12)
  • 28 Open Up Exisiting Chat
    • iOS-AWM - 1 - Open Chat (2:30)
    • iOS-AWM - 2 - Fix Chat Appearence Bug (2:25)
  • 29 Reorganize Files
    • iOS-AWN - 1 - Reorganization (4:53)
  • 30 Add New Group Button
    • iOS-AWO - 1 - Create pressedNewGroup and createHeader Methods (4:13)
    • iOS-AWO - 2 - Add Auto Layout to our Button (3:16)
    • iOS-AWO - 3 - Finish Setting up the TableHeader (3:55)
  • 31 Push to NewGroupViewController
    • iOS-AWP - 1 - Create NewGroupViewController (1:44)
    • iOS-AWP - 2 - Add NewGroupViewController to the AllChatsViewController (3:12)
  • 32 NewGroupViewController User Interface
    • iOS-AWQ - 1 - Begin Setting up the NewGroupViewController (4:24)
    • iOS-AWQ - 2 - Add Auto Layout (5:33)
    • iOS-AWQ - 3 - Add Corresponding Methods (0:45)
    • iOS-AWQ - 4 - Create updateChacterLabel and updateNextButton Methods (3:39)
    • iOS-AWQ - 5 - Add Extension for the UITextField (5:06)
  • 33 Insert Chat with Name
    • iOS-AWR - 1 - Update Chat Model (1:14)
    • iOS-AWR - 2 - Insert Chat Object (1:11)
  • 34 Push to New Group Participants ViewController
    • iOS-AWS - 1 - Create NewGroupParticipantsViewController (2:13)
    • iOS-AWS - 2 - Update next Method (2:13)
  • 35 Setup New Participants User Interface
    • iOS-AWT - 1 - Add contact Asset (0:29)
    • iOS-AWT - 2 - Implement createSearchField Method (6:45)
    • iOS-AWT - 3 - Add Constraints to the createSearchField Method (2:40)
    • iOS-AWT - 4 - Create showCreateButton Method (1:27)
    • iOS-AWT - 5 - Add UIElements in viewDidLoad (3:38)
    • iOS-AWT - 6 - Run the Application (0:38)
  • 36 Display Contacts
    • iOS-AWU - 1 - Add UITableViewDataSource to NewGroupParticipantsViewController (3:20)
    • iOS-AWU - 2 - NSFetchRequest in the NewGroupParticipantsViewController (2:51)
  • 37 Search Contacts
    • iOS-AWV - 1 - Add endSearch Method (2:05)
    • iOS-AWV - 2 - Implement UITextField Delegate (7:16)
  • 38 Select Participants
    • iOS-AWW - 1 - Begin Setting up the UITableViewDelegate Extension (1:53)
    • iOS-AWW - 2 - Finish Setting up the UITableViewDelegate Extension (4:28)
  • 39 Open Up Group Chat
    • iOS-AWX - 1 - Display Group Chat (2:54)
  • 40 Update User Interface for Group Chats
    • iOS-AWY - 1 - Add Check for Group Chats (0:43)
  • 41 Import Contacts
    • iOS-AWZ - 1 - Create the ContactImporter Class (6:30)
    • iOS-AWZ - 2 - ContactImporter Class Bug (1:09)
    • iOS-AWZ - 3 - Update the AppDelegate (2:35)
  • 42 Create Contact
    • iOS-AXA - 1 - Update Contact Model (1:33)
    • iOS-AXA - 2 - Add Context and Access Contact (2:19)
    • iOS-AXA - 3 - Update AppDelegate (2:02)
  • 43 Add Phone Numbers
    • iOS-AXB - 1 - Create PhoneNumber Model (2:51)
    • iOS-AXB - 2 - Create formatPhoneNumber Method (2:43)
    • iOS-AXB - 3 - Assign the phoneNumbers attribute (4:31)
  • 44 Make Fetch Thread Safe and Save
    • iOS-AXC - 1 - Add Thread Security (4:15)
  • 45 Listen for Changes
    • iOS-AXD - 1 - Listen for Changes in ContactImporter (2:45)
    • iOS-AXD - 2 - Update AppDelegate (3:46)
  • 46 Hack for Notification Bug
    • iOS-AXE - 1 - Fix Notification Bug (2:33)
  • 47 Update Contacts
    • iOS-AXF - 1 - Create fetchExisting Method (6:01)
    • iOS-AXF - 2 - Update the Fetch (4:23)
  • 48 Reorganize Files
    • iOS-AXG - 1 - Organization Time (1:07)
  • 49 Add TabBarController
    • iOS-AXH - 1 - Create ContextViewController Protocol (2:24)
    • iOS-AXH - 2 - Add chat_icon Asset (0:26)
    • iOS-AXH - 3 - Create a MainContext in the AppDelegate (1:08)
    • iOS-AXH - 4 - Create TabBarController (4:29)
  • 50 Hide TA Bar when Pushing to ChatViewController
    • iOS-AXI - 1 - Dynamically Hide the TabBar (1:35)
  • 51 Add ContactsViewController
    • iOS-AXJ - 1 - Create ContactsViewController (4:03)
    • iOS-AXJ - 2 - Add New Image Asset (0:35)
    • iOS-AXJ - 3 - Update vcData Array (1:27)
  • 52 Fix Titles in TabBar
    • iOS-AXK - 1 - Add Titles Information to vcData Array (2:14)
    • iOS-AXK - 2 - Set Title for the ContactsViewController (1:10)
  • 53 Fetch and Display Contacts
    • iOS-AXL - 1 - Create TableViewFetchedResultsDisplayer Protocol (1:29)
    • iOS-AXL - 2 - Setup Context (4:48)
    • iOS-AXL - 3 - Conform to the TableViewFetchedResultsDisplayer Protocol (2:28)
    • iOS-AXL - 4 - Begin Setting up the UITableViewDataSource Extension (2:21)
    • iOS-AXL - 5 - Finish Setting up the UITableViewDataSource Extension (3:00)
  • 54 Add Search for Contacts
    • iOS-AXM - 1 - Create ContactsSearchResultsController (3:47)
    • iOS-AXM - 2 - Add UITableViewDataSource and UITableViewDelegate Methods (3:10)
    • iOS-AXM - 3 - Add UISearchResultsUpdating Extension (4:08)
    • iOS-AXM - 4 - Add ContactsSearchResultController to the ContactsViewController (4:36)
  • 55 iOS-AXN - Select Contact
    • iOS-AXN - 1 - Create ContactSelector (0:58)
    • iOS-AXN - 2 - Conform to the ContactSelector Protocol (1:24)
    • iOS-AXN - 3 - Ceate selectedContact Method (4:10)
    • iOS-AXN - 4 - Add UITableViewDelegate Extension (3:00)
  • 56 Add New Contact
    • iOS-AXO - 1 - Create CNContact Extension (3:39)
  • 57 Organize Files
    • iOS-AXP - 1 - Organization Time (1:09)
  • 58 Sync Contacts Importer to MainContext
    • iOS-AXQ - 1 - Create a Syncer Class (2:18)
    • iOS-AXQ - 2 - Add Context Notifications (3:59)
    • iOS-AXQ - 3 - Update the AppDelegate (1:16)
  • 59 Add FavoritesViewController
    • iOS-AXR - 1 - Create FavoriteCell (4:47)
    • iOS-AXR - 2 - Add Favorites Asset (0:29)
    • iOS-AXR - 3 - Create FavoritesViewController (3:25)
    • iOS-AXR - 4 - Create configureCell Method (2:18)
    • iOS-AXR - 5 - Begin Setting up the FavoritesViewController (1:24)
    • iOS-AXR - 6 - Setup a Context (2:53)
    • iOS-AXR - 7 - Setup UITableViewDataSource Extension (4:43)
    • iOS-AXR - 8 - Setup UITableViewDelegate Extension (1:54)
    • iOS-AXR - 9 - Update the AppDelegate (1:13)
  • 60 Populate Favorites Cell with Data
    • iOS-AXS - 1 - Update Contact and phoneNumber Models (2:02)
    • iOS-AXS - 2 - Add Information to Favorite Cell (3:28)
  • 61 Add Contacts to Favorites
    • iOS-AXT - 1 - Update Favorite Attribute (1:37)
  • 62 Set Phone Number Kind
    • iOS-AXU - 1 - Set kind Attribute (1:06)
    • iOS-AXU - 2 - Display kind Attribute (2:29)
  • 63 View Contact
    • iOS-AXV - 1 - Add accessoryButtonTappedForRowWithIndexPath Method (4:02)
  • 64 Remove Favorites
    • iOS-AXW - 1 - Add setEditing Method (3:06)
    • iOS-AXW - 2 - Create deleteAll Method (1:18)
    • iOS-AXW - 3 - Add commitEditingStyle Method (1:34)
  • 65 Open Chat from FavoritesViewController
    • iOS-AXX - 1 - Create exisiting Method (4:01)
    • iOS-AXX - 2 - Create new Method (1:51)
    • iOS-AXX - 3 - Display Chat (3:38)
  • 66 Check for Existing Chat in NewChatViewController
    • iOS-AXY - 1 - Existing Chat Check (1:36)
  • 67 Organize Files
    • iOS-AXZ - 1 - Organization Time (3:11)
  • 68 Setup SignUpViewController
    • iOS-AYA - 1 - Create SignUpViewController (3:17)
    • iOS-AYA - 2 - Continue Setup (5:05)
    • iOS-AYA - 3 - Add Constraints (3:43)
    • iOS-AYA - 4 - Update the AppDelegate (0:53)
  • 69 Check SignUp Inputs
    • iOS-AYB - 1 - Create alertForError Method (1:53)
    • iOS-AYB - 2 - Add Tests for the SignUpViewController (2:49)
  • 70 Setup Remote Store Protocol for SignUp
    • iOS-AYC - 1 - Setup RemoteStoreProtocol (1:37)
    • iOS-AYC - 2 - Call RemoteStoreProtocol (1:14)
  • 71 Setup Callbacks for SignUp
    • iOS-AYD - 1 - Create startSyncing Method (0:21)
    • iOS-AYD - 2 - Additional Setup in the SignUpViewController (2:30)
    • iOS-AYD - 3 - Prevent Pressing continue Multiple Times (2:29)
  • 72 Add Remote Store to Syncer
    • iOS-AYE - 1 - Create store Method (0:59)
    • iOS-AYE - 2 - Add objectsForKey Method (2:43)
    • iOS-AYE - 3 - Handle backgroundContext Objects Keys (2:32)
  • 73 Getting Ready for Firebase
    • iOS-AYF - 1 - Setup Firebase Context (2:24)
    • iOS-AYF - 2 - Fault Updated Object (2:29)
  • 74 Install Firebase
    • iOS-AYG - 1 - Create a Firebase Account (1:57)
    • iOS-AYG - 2 - Install Firebase (3:33)
  • 75 Check Firebase for Auth Data
    • iOS-AYH - 1 - Create FirebaseStore (3:12)
    • iOS-AYH - 2 - Add FirebaseStore to the AppDelegate (3:31)
  • 76 Setup Firebase as Remote Store
    • iOS-AYI - 1 - Add RemoteStore Extension (1:09)
    • iOS-AYI - 2 - Add RemoteStore to the AppDelegate (4:04)
  • 77 Add Sign Up Code
    • iOS-AYJ - 1 - Create currentPhoneNumber Method (1:59)
    • iOS-AYJ - 2 - Implement Authentication in Firebase (6:40)
    • iOS-AYJ - 3 - Signup in Firebase (3:20)
  • 78 Uploading Data
    • iOS-AYK - 1 - Create FirebaseModel (1:09)
    • iOS-AYK - 2 - Add upload Method to FirebaseStore (1:50)
  • 79 Write Contact to CoreData from Firebase
    • iOS-AYL - 1 - Update Contact Model (1:00)
    • iOS-AYL - 2 - Query Firebase Contact (3:05)
    • iOS-AYL - 3 - Write from Firebase Contact (1:51)
    • iOS-AYL - 4 - Bug Fixes (2:33)
    • iOS-AYL - 5 - Sync a User (4:46)
  • 80 Save Chat
    • iOS-AYM - 1 - Update Chat Model (1:23)
    • iOS-AYM - 2 - Begin Upload Chat to Firebase (3:48)
    • iOS-AYM - 3 - Refactor currentPhoneNumber Method (1:30)
    • iOS-AYM - 4 - Finish Upload Chat to Firebase (4:12)
    • iOS-AYM - 5 - Save the Store (0:37)
  • 81 Save Message
    • iOS-AYN - 1 - Upload Mesage to Firebase (3:37)
  • 82 Add Observer for New Users
    • iOS-AYP - 1 - Create observeStatus Method (3:22)
    • iOS-AYP - 2 - Create fetchAppContacts Method (2:22)
    • iOS-AYP - 3 - Observe Statuses (3:24)
  • 83 Add Observer for Chats
    • iOS-AYQ - 1 - Create getContactId Method for Contacts (3:39)
    • iOS-AYQ - 2 - Create existing Method for Contacts (4:02)
    • iOS-AYQ - 3 - Create new Method for Contacts (2:49)
    • iOS-AYQ - 4 - Create existing Method for Chats (3:00)
    • iOS-AYQ - 5 - Begin Creating new Method for Chats (4:26)
    • iOS-AYQ - 6 - Finish Creating new Method for Chats (3:20)
    • iOS-AYQ - 7 - Create observeChats Method (2:58)
    • iOS-AYQ - 8 - Add an Additional Call to observeStatus and Testing (3:55)
  • 84 Reorganize Files
    • iOS-AYR - 1 - Create Chat+Firebase File (1:38)
    • iOS-AYR - 2 - Create Contact+Firebase File (1:06)
    • iOS-AYR - 3 - Create Message+Firebase File (0:51)
    • iOS-AYR - 4 - Create FirebaseModel File (0:50)
    • iOS-AYR - 5 - Reorganize Files (1:08)
  • 85 Observe New Messages for New Chats
    • iOS-AYU - 1 - Begin Creating observeMessages Method (5:28)
    • iOS-AYU - 2 - Finish Creating observeMessages Method (2:23)
    • iOS-AYU - 3 - Updates to the FirebaseStore (1:17)
    • iOS-AYU - 4 - Call observeMessages and Testing (2:09)
  • 86 Add Assets
    • iOS-AYW - 1 - Add Assets (3:57)
  • 87 Only Show Users in Firebase
    • iOS-AYV - 1 - Add Predicate to the NewChatViewController (1:21)
    • iOS-AYV - 2 - Add Predicate to the NewGroupParticipantsViewController (1:24)

View Full Curriculum


Access
Lifetime
Content
5 hours
Lessons
130

The Bitfountain Auto Layout Immersive Course

Build Dynamic Apps That Work Seamlessly Across Apple Devices

By Bitfountain | in Online Courses

As Apple continues to diversify the sizes and layouts of their devices, it has become vital for iOS developers to understand the Auto Layout library. Auto Layout is dynamic and responsive, allowing apps to work seamlessly across different platforms. If you want to build competitive apps for iOS, this is the course for you.

  • Access 130 lectures & 5 hours of content 24/7
  • Master Auto Layout in XCode's storyboard for dynamic layouts
  • Learn iOS 9's brand new UIStackView class
  • Cover historical layouts & NSLayoutConstraints for iOS 9
  • Delve into Content Hugging, Compression Resistance & Constraint Equality
  • Work w/ VFL's syntax to quickly construct constraints
Eliot Arntz regularly teaches iOS development classes and workshops at General Assembly and guest lectures for companies and development boot camps around NYC. He also taught the inaugural class for Coalition for Queens which focused on increasing diversity in iOS development. He also coaches students in a one-on-one environment with a focus on transitioning to full time development. Eliot cofounded and organizes the iOS Office Hours meetup NYC. In his free time he works as a contractor for startups focusing on agile development. For more details on this course and instructor, click here.

Details & Requirements

  • Length of time users can access this course: lifetime
  • Access options: web streaming, mobile streaming
  • Certification of completion not included
  • Redemption deadline: redeem your code within 30 days of purchase
  • Experience level required: intermediate, knowledge of Swift or Objective-C are necessary

Compatibility

  • Internet required

Course Outline

  • 1 Auto Layout Intro
    • iOS-ASL - 1 - Auto Layout Intro Part 1 (3:34)
    • iOS-ASL - 2 - Auto Layout Intro Part 2 (3:47)
  • 2 Auto Layout Initial Setup
    • iOS-ASM - 1 - Auto Layout Initial Setup (2:46)
  • 3 Our First Auto Layout
    • iOS-ASN - 1 - Our First Auto Layout (3:38)
    • iOS-ASN - 2 - Changing Margin Values (1:57)
    • iOS-ASN - 3 - Resolve Auto Layout Issues (2:44)
    • iOS-ASN - 4 - Fixing Position in Document Outline (2:02)
  • 4 Centering Items Using Auto Layout
    • iOS-ASO - 1 - Centering Items Using Auto Layout (2:46)
    • iOS-ASO - 2 - Fixing the Auto Layout Problem (3:44)
  • 5 Auto Layout Based on Other UI Elements
    • iOS-ASP - 1 - Auto Layout Based on Other UI Elements (3:21)
  • 6 Conflicting Constraints
    • iOS-ASQ - 1 - Conflicting Constraints (2:58)
    • iOS-ASQ - 2 - Deleting Constraints (2:56)
  • 7 Auto Layout Constraints
    • iOS-ASR - 1 - Auto Layout Constraints Intro (3:32)
    • iOS-ASR - 2 - Creating a Subview and Declaring Constraints (3:55)
    • iOS-ASR - 3 - Adding the Subiew and Setting AutoResizingMask (1:47)
    • iOS-ASR - 4 - Activating the Constraints (2:04)
    • iOS-ASR - 5 - Adding Constants (4:03)
    • iOS-ASR - 6 - Add Constraints in viewDidLoad (1:32)
  • 8 Auto Layout Anchors
    • iOS-ASS - 1 - Anchors Introduction (1:58)
    • iOS-ASS - 2 - Axis Anchors (3:38)
    • iOS-ASS - 3 - Dimension Anchors (3:31)
    • iOS-ASS - 4 - Solving the Constraints Conflict (1:30)
    • iOS-ASS - 5 - Dimension Anchors with Multipliers (3:41)
    • iOS-ASS - 6 - Width and Height Equal to Superview (2:46)
  • 9 Baseline Anchors
    • iOS-AST - 1 - Baseline Anchors (4:24)
    • iOS-AST - 2 - Adding our First Baseline Anchor (2:58)
    • iOS-AST - 3 - Baseline Anchor Challenge (0:33)
    • iOS-AST - 4 - Baseline Anchor Challenge Solution (2:10)
  • 10 Leading and Trailing vs Left and Right
    • iOS-ASU - 1 - Leading and Trailing vs Left and Right (2:23)
  • 11 Centering
    • iOS-ASV - 1 - Horizontal Centering (2:35)
    • iOS-ASV - 2 - Vertical Centering (1:50)
  • 12 Equality
    • iOS-ASW - 1 - Equality Intro (2:15)
    • iOS-ASW - 2 - Auto Layout Equality (3:46)
    • iOS-ASW - 3 - A Quick Note About Inequality (0:37)
    • iOS-ASW - 4 - Constraints with Inequality (3:33)
  • 13 Ambiguous Layout
    • iOS-ASX - 1 - Ambiguous Layout (1:01)
    • iOS-ASX - 2 - Ambiguous Layout in Xcode (2:26)
    • iOS-ASX - 3 - Fixing the Previous Layout (2:12)
  • 14 Unsatisfiable Constraints
    • iOS-ASY - 1 - Unsatisfiable Constraints (1:14)
    • iOS-ASY - 2 - Unsatisfiable Constraints in Xcode (3:55)
    • iOS-ASY - 3 - More Unsatisfiable Constraints (2:56)
  • 15 Intrinsic Content Size
    • iOS-ASZ - 1 - Intrinsic Content Size Intro (1:37)
    • iOS-ASZ - 2 - Intrinsic Content Size in Xcode (4:27)
    • iOS-ASZ - 3 - Intrinsic Content Size UIButton (3:15)
    • iOS-ASZ - 4 - Intrinsic Content Size UITextView (4:26)
    • iOS-ASZ - 5 - Intrinsic Content Size UITextView Mystery Solution (1:29)
    • iOS-ASZ - 6 - Baselines revisited (2:41)
    • iOS-ASZ - 7 - Breaking Baselines (3:08)
    • iOS-ASZ - 8 - Breaking Baselines with Scrolling (1:37)
  • 16 Auto Layout Guides
    • iOS-ATA - 1 - Auto Layout Guides (2:59)
    • iOS-ATA - 2 - Margin Guides (4:24)
    • iOS-ATA - 3 - Playing with Margin Guides (4:43)
    • iOS-ATA - 4 - Changing Margin Guides (2:16)
    • iOS-ATA - 5 - Top and Bottom Guides Create Project (1:41)
    • iOS-ATA - 6 - topLayoutGuide (2:41)
    • iOS-ATA - 7 - bottomLayoutGuide (3:28)
  • 17 Content Hugging vs Compression Resistance
    • iOS-ATB - 1 - Content Hugging vs Compression Resistance Part 1 (2:52)
    • iOS-ATB - 2 - Content Hugging vs Compression Resistance Part 2 (2:06)
  • 18 Content Hugging
    • iOS-ATC - 1 - Content Hugging (2:52)
    • iOS-ATC - 2 - Content Hugging Add Constraints (3:39)
    • iOS-ATC - 3 - Content Hugging Priority (3:45)
    • iOS-ATC - 4 - Playing with Content Hugging (2:00)
    • iOS-ATC - 5 - Content Hugging in Storyboard Part 1 (5:54)
    • iOS-ATC - 6 - Content Hugging in Storyboard Part 2 (2:24)
    • iOS-ATC - 7 - Content Hugging in Storyboard Part 3 (4:28)
  • 19 Content Compression Resistance
    • iOS-ATD - 1 - Content Compression Resistance (4:26)
    • iOS-ATD - 2 - Content Compression Resistance Changing Priority (2:28)
    • iOS-ATD - 3 - Content Compression Resistance in Storyboard Part 1 (4:07)
    • iOS-ATD - 4 - Content Compression Resistance in Storyboard Part 2 (1:45)
  • 20 A Sneaky Quiz
    • iOS-ATE - 1 - A Sneaky Quiz (2:43)
  • 21 Intrinsic Content Size vs Explicit Constraints
    • iOS-ATF - 1 - Intrinsic Content Size vs Explicit Constraints (1:07)
  • 22 UIStackView Introduction
    • iOS-ASB - 1 - UIStackView Introduction (5:07)
  • 23 UIStackView First Stack
    • iOS-ATK - 1 - UIStackView Initial Setup (2:05)
    • iOS-ATK - 2 - UIStackView First Stack (1:30)
  • 24 UIStackView Spacing & Alignment
    • iOS-ATL - 1 - UIStackView Evenly Spaced Views with Alignment (3:22)
    • iOS-ATL - 2 - UIStackView Making One View Taller (2:09)
    • iOS-ATL - 3 - UIStackView Pinning the UIStackView with Autolayout (3:33)
    • iOS-ATL - 4 - UIStackView Fill Proportionately (2:51)
    • iOS-ATL - 5 - UIStackView Alignment (4:33)
    • iOS-ATL - 6 - A Note About Deleting Constraints
  • 25 UIStackView with Buttons & Labels
    • iOS-ATN - 1 - UIStackView Buttons, Labels, Images (4:11)
    • iOS-ATN - 2 - UIStackView Pinning the Stack View (2:44)
    • iOS-ATN - 3 - UIStackView Resizing Buttons (1:20)
  • 26 UIStackView with Auto Layout
    • iOS-ATO - 1 - UIStackView Auto Layout (4:48)
    • iOS-ATO - 2 - UIStackView Adding A Second UIStackView (1:59)
    • iOS-ATO - 3 - UIStackView A UIStackView inside another UIStackView (3:39)
  • 27 NSLayoutContraints
    • iOS-ATP - 1 - NSLayoutContraints Intro (0:54)
    • iOS-ATP - 2 - NSLayoutContraints in Xcode (2:13)
    • iOS-ATP - 3 - NSLayoutContraints Activating and Deactivating (2:19)
  • 28 NSLayoutConstraint Constructor
    • iOS-ATQ - 1 - NSLayoutConstraint Constructor (3:43)
    • iOS-ATQ - 2 - Adding More Constraints (2:56)
  • 29 NSLayoutConstraint Constructor vs Anchors
    • iOS-ATR - 1 - NSLayoutConstraint Constructor vs Anchors Intro (0:56)
    • iOS-ATR - 2 - NSLayoutConstraint Constructor vs Anchors (3:03)
  • 30 Activating and Deactivating Constraints
    • iOS-ATS - 1 - Activating and Deactivating Constraints Intro (0:33)
    • iOS-ATS - 2 - Setup (3:16)
    • iOS-ATS - 3 - Activating and Deactivating the Constraints (1:36)
  • 31 NSLayoutConstraints Priorities
    • iOS-ATT - 1 - NSLayoutConstraints Properties Intro (0:26)
    • iOS-ATT - 2 - NSLayoutConstraints Priority (2:31)
    • iOS-ATT - 3 - NSLayoutConstraints Setting Priority (2:18)
    • iOS-ATT - 4 - NSLayoutConstraints Different Priorities Don't Conflict (1:40)
    • iOS-ATT - 5 - NSLayoutConstraints Constants (1:39)
    • iOS-ATT - 6 - Printing All NSLayoutConstraints Priority
  • 32 Our First VFL Constraint
    • iOS-AUF - 1 - Setup (1:29)
    • iOS-AUF - 2 - Our First VFL Constraint (3:44)
    • iOS-AUF - 3 - constraintsWithVisualFormat (2:06)
    • iOS-AUF - 4 - constraintsWithVisualFormat Options (1:50)
    • iOS-AUF - 5 - Vertical Constraint (1:10)
    • iOS-AUF - 6 - Activating the Constraints (2:25)
  • 33 VFL Constants
    • iOS-AUG - 1 - VFL Constants (3:52)
  • 34 VFL Multiple Predicates
    • iOS-AUH - 1 - VFL Multiple Predicates (1:47)
  • 35 VFL Priorities
    • iOS-AUI - 1 - Priorities Recap (1:07)
    • iOS-AUI - 2 - VFL Priorities (2:27)
    • iOS-AUI - 3 - Conflicts (1:16)
  • 36 VFL Relative Size
    • iOS-AUJ - 1 - VFL Relative Size Intro (0:45)
    • iOS-AUJ - 2 - VFL Relative Size Example (2:33)
    • iOS-AUJ - 3 - VFL Relative Size Mini Challenge (0:23)
    • iOS-AUJ - 4 - VFL Relative Size Mini Challenge Solution (0:59)
  • 37 VFL Spacing Between Views
    • iOS-AUK - 1 - Two Flush Views Setup (2:25)
    • iOS-AUK - 2 - Two Flush Views Add Constraints (3:08)
    • iOS-AUK - 3 - Options (1:14)
    • iOS-AUK - 4 - Add Height Constraint (1:45)
    • iOS-AUK - 5 - Add Height Constraint in VFL (2:11)
    • iOS-AUK - 6 - Default Space Between Views (1:55)
    • iOS-AUK - 7 - Constants (1:05)
    • iOS-AUK - 8 - Vertical Challenge (0:10)
    • iOS-AUK - 9 - Vertical Challenge Solution (2:16)
  • 38 VFL Metrics
    • iOS-AUL - 1 - VFL Metrics Intro (0:39)
    • iOS-AUL - 2 - VFL Metrics Example (3:17)

View Full Curriculum


Access
Lifetime
Content
1 hours
Lessons
22

The Bitfountain Guide to Submitting to the Apple Store

You Built the App, Now It's Time to Get It in the Apple Store

By Bitfountain | in Online Courses

What's the point of learning how to build apps for iOS if you can't get them on the Apple Store? Sure, you're a big, bad iOS developer now, but even Einstein had trouble reading. What we mean to say is, it might sound simple, but there's no harm in learning how to do it right.

  • Access 22 lectures & 1 hour of content 24/7
  • Cover the full process of bringing an app to the Apple Store
  • Create & download certificates & provisioning profiles
  • Learn how to upload the build to iTunes Connect
  • Understand the App Store Check List
Eliot Arntz regularly teaches iOS development classes and workshops at General Assembly and guest lectures for companies and development boot camps around NYC. He also taught the inaugural class for Coalition for Queens which focused on increasing diversity in iOS development. He also coaches students in a one-on-one environment with a focus on transitioning to full time development. Eliot cofounded and organizes the iOS Office Hours meetup NYC. In his free time he works as a contractor for startups focusing on agile development. For more details on this course and instructor, click here.

Details & Requirements

  • Length of time users can access this course: lifetime
  • Access options: web streaming, mobile streaming
  • Certification of completion not included
  • Redemption deadline: redeem your code within 30 days of purchase
  • Experience level required: intermediate

Compatibility

  • Internet required

Course Outline

  • Submitting Your App to the Store
    • iOS-AUU - 1 - Submitting Your App to the Store (0:59)
    • iOS-AUU - 2 - Create an Apple ID (2:16)
    • iOS-AUU - 3 - Apple Developer Account (3:13)
    • iOS-AUU - 4 - Logging into Member Center and iTunes Connects (3:12)
    • iOS-AUU - 5 - Creating a Certificate SIgning Request (1:48)
    • iOS-AUU - 6 - Creating and Downloading Certificates (3:25)
    • iOS-AUU - 7 - Registering our Device (3:18)
    • iOS-AUU - 8 - Create a Test Project (1:12)
    • iOS-AUU - 9 - Creating an App ID (2:10)
    • iOS-AUU - 10 - Creating the Provisioning Profiles (3:06)
    • iOS-AUU - 11 - Installing the Provisioning Profiles and Running on your Device (3:46)
    • iOS-AUU - 12 - Part 1 Creating an App in iTunes Connect (2:59)
    • iOS-AUU - 13 - Part 2 Creating an App in iTunes Connect (9:52)
    • iOS-AUU - 14 - Adding the icons to our project (1:55)
    • iOS-AUU - 15 - Upload the Build to iTunes Connect (3:09)
    • iOS-AUU - 16 - Submitting the Application to the App Store (1:21)
    • iOS-AUU - 17 - App Store Check List (0:40)
    • iOS-AUU - 18 - How does the App Store Approval Process Work? (1:40)
    • iOS-AUU - 19 - Top Reasons for App Store Rejection (3:13)
    • iOS-AUU - 20 - How can I improve my Application Sales? (1:40)
    • iOS-AUU - 21 - What does an Application Rejection Look Like (1:48)

View Full Curriculum


Access
Lifetime
Content
31 hours
Lessons
350

The Bitfountain iOS 8 with Swift Immersive

Learn the Official Apple App Language by Actually Building Apps

By Bitfountain | in Online Courses

The principles of developing mobile apps can be applied across operating systems. That's why this developing for iOS 8 course is so important. Using Swift, the official native language for all iOS and Mac apps, you'll build 14 apps for iOS 8 while applying skills you can use for other iOS systems as well. There's no better way to breaking into the lucrative field of iOS development than by actually building apps, wouldn't you agree?

  • Access 350 lectures & 31 hours of content 24/7
  • Learn how to connect w/ third party APIs like Facebook & other social media platforms
  • Understand NSURLSession for API Integration
  • Create beautiful interfaces using Apple's App Storyboard
  • Design responsive interfaces for various iOS device screen sizes
  • Discover Core Data & its applications within the Apple system
  • Learn about developing for Apple's HealthKit
  • Implement & work with in-app analytics to better understand application usability & growth
Eliot Arntz regularly teaches iOS development classes and workshops at General Assembly and guest lectures for companies and development boot camps around NYC. He also taught the inaugural class for Coalition for Queens which focused on increasing diversity in iOS development. He also coaches students in a one-on-one environment with a focus on transitioning to full time development. Eliot cofounded and organizes the iOS Office Hours meetup NYC. In his free time he works as a contractor for startups focusing on agile development. For more details on this course and instructor, click here.

Details & Requirements

  • Length of time users can access this course: lifetime
  • Access options: web streaming, mobile streaming
  • Certification of completion not included
  • Redemption deadline: redeem your code within 30 days of purchase
  • Experience level required: all level

Compatibility

  • Internet required

Course Outline

  • Introduction
    • Course Introduction (6:01)
    • Course Resources (2:49)
  • Our First Project!!!
    • Downloading Xcode (1:41)
    • Opening XCode and Creating our First Project (7:58)
    • A Brief Tour of Xcode (10:25)
    • Exploring Storyboard (9:13)
    • Setting up a New View (6:01)
  • Navigation
    • Adding a Navigation Controller (4:55)
    • Adding a Title and Another Image (4:52)
    • Adding TextFields (3:30)
    • Adding a Button and a Label (3:13)
  • IBOutlets and Connections
    • Hooking up our View Objects (14:12)
    • Debugging Connection Errors (5:52)
    • Unhiding our Label (5:26)
  • Accessing Views in Code
    • Changing a Label's Text in Code (5:00)
    • Changing a TextField's Text in Code (1:36)
    • Moving our Label and Closing the Keyboard (4:38)
    • Multi Line Label (1:56)
    • Changing a Label's Color in Code (3:21)
    • Let's Update our Button (4:26)
  • Working with GitHub
    • Terminal (10:07)
    • Creating a Project on Github (2:26)
    • Saving our Project to Github (6:42)
    • Adding an Additional Commit (3:16)
    • Downloading and Opening a Project from Github (2:06)
  • First Challenge!
    • Challenge 1: Practicing with the Storyboard (2:25)
    • Challenge 1: Practicing with the Storyboard Solution (4:59)
  • Second Challenge!!
    • Challenge 2: Save your Changes to Github (0:48)
    • Challenge 2: Save your Changes to Github Solution (1:49)
  • Variable Types and Commenting
    • What is a Variable? (6:23)
    • Type Annotations (3:42)
    • Intro to Commenting (4:43)
  • Operations on Variables
    • Operations on Variables Ints (3:08)
    • Operations on Variables Floats (5:15)
    • Valid Variable Names (3:05)
    • Typealias (2:49)
    • Numeric Literals (1:46)
  • Strings
    • Strings and Characters (5:28)
    • String Interpolation (1:53)
    • Optionals Int (4:32)
    • String to Double (4:29)
    • Shorthand (2:01)
    • Constants (2:43)
  • Shoe Size Converter Project
    • Shoe Size Converter (12:24)
    • Refactor Shoe Converter (3:23)
    • Adding Women's Shoes (7:03)
  • Age of Laika
    • Age of Laika (1:14)
    • Age of Laika: Solution Part 1 (5:39)
    • Age of Laika: Solution Part 2 (3:07)
  • Control Flow
    • If Statements (6:51)
    • Bools (2:35)
    • If Statements Continued (4:44)
    • Numeric Type Conversion (3:10)
  • Age of Laika Assignment
    • Age of Laika: Control Flow Challenge (1:46)
    • Age of Laika: Control Flow Solution (5:51)
  • For Loops
    • For Loops (6:20)
    • Limitations of For Loops (3:26)
    • 99 Sodas Challenge (1:03)
    • 99 Sodas Challenge Solution (3:14)
  • Lions and Tigers .. oh my!
    • Intro to Object Oriented Programming (3:27)
    • What are Structs and Instances? (2:38)
    • Create a New Project and Storyboard Setup (10:05)
    • Make Your Own Struct (1:51)
    • Adding Properties to the Tiger (4:41)
    • Instantiating our First Struct (5:23)
    • Using the Tiger Instance (2:42)
    • Multiple Tigers (4:56)
  • Arrays
    • Introduction to Arrays (2:20)
    • Create an Array (3:42)
    • Two Cool Properties of Arrays (2:26)
    • Indexing into an Array and Iterating Over an Array (4:20)
    • Ranges and For in Loops (4:17)
    • For in Enumerate Loop (2:52)
    • Mutating an Array (9:35)
    • Generating a Random Number (4:14)
    • Adding Tigers to an Array (6:20)
    • Show a Random Tiger (3:13)
    • Animating our Tigers (9:08)
    • While Loops (3:57)
    • Recurring Tiger Bug (6:36)
    • Our First Function (3:37)
    • Our First Parameter (4:27)
    • Multiple Parameters (3:33)
    • Return Values (6:23)
    • Another Return Value and Other Function Calls (4:46)
    • Looking at the Current Functions (2:43)
    • The Tiger can Chuff (3:07)
    • Chuff a Number of Times and Self (13:08)
    • Self Continued (3:22)
    • Chuff a Number of Times with Control Flow (4:52)
    • Update Tigers Age Function (4:56)
    • Adding a Random Fact Function (7:55)
    • Switch Statement (4:07)
  • Challenge: 99 Red Balloons
    • 99 Red Balloons Struct Challenge (2:19)
    • 99 Red Balloons Storyboard Setup Solution (4:47)
    • 99 Red Balloons Struct Solution (1:38)
    • 99 Red Balloons Create Balloons Function Solution (7:11)
    • 99 Red Balloons Update UI Solution (3:49)
  • Classes
    • Classes and Structs (3:03)
    • Creating a Lion (6:32)
    • Create a Lion Array (1:35)
    • Introduction to Tuples (3:17)
    • Switch Statement with a Tuple (3:04)
    • Update Current Animal (5:28)
    • Displaying both Lions and Tigers (7:08)
    • Lion Roar Function (1:12)
    • Accessing Properties in a Function (2:12)
    • Lion Random Fact Function (3:16)
  • Subclass
    • Subclass the Lion Class (3:40)
    • Override Function in LionCub Class (3:00)
    • Super Keyword (1:32)
    • Additional Function and a Female Lion Cub (6:36)
    • Displaying Lion Cubs (4:34)
  • Slot Machine Project!!!!!
    • SlotMachine: Introduction (3:13)
    • SlotMachine: Starting our New App (3:31)
    • SlotMachine: Setup ContainerViews (20:27)
    • SlotMachine: Finishing Setup ContainerViews (10:14)
    • SlotMachine: setupFirstContainer (6:09)
    • SlotMachine: setupSecondContainer (11:10)
    • SlotMachine: setupThirdContainer (7:12)
    • SlotMachine: Some more Labels in the ThirdContainer (5:53)
    • SlotMachine: Finish adding Labels to the ThirdContainer (7:09)
    • SlotMachine: Start Setup FourthContainer (16:05)
    • SlotMachine: Another Button in the fourth Container (7:19)
    • SlotMachine: Finishing the fourth Container (7:27)
    • SlotMachine: Adding a Slot Struct (1:44)
    • SlotMachine: Adding Assets (1:39)
    • SlotMachine: Factory Class (13:52)
    • SlotMachine: Create Slot (14:39)
    • SlotMachine: Implementing Create Slot (1:23)
    • SlotMachine: Slots Array (2:04)
    • SlotMachine: Showing Slots (3:15)
    • SlotMachine: Remove old ImageViews (5:24)
    • SlotMachine: hardReset (4:01)
    • SlotMachine: updateMainView (1:26)
    • SlotMachine: showAlertWithText (4:30)
    • SlotMachine: betOneButtonPressed (2:44)
    • SlotMachine: betMaxButtonPressed (2:53)
    • SlotMachine: Reordering Slots into Rows (7:01)
    • SlotMachine: computeWinnings (3:03)
    • SlotMachine: Check for Flush (4:58)
    • SlotMachine: Check for Three in a Row (4:19)
    • SlotMachine: Check for Three of a Kind (2:49)
    • SlotMachine: Finishing Touches (3:31)
  • Lemonade Stand Assignment
    • Lemonade Stand Assignment!!!
  • Lemonade Stand Solution Videos
    • Lemonade Stand: Storyboard Solution (11:22)
    • Lemonade Stand: Connection's Solution (7:36)
    • Lemonade Stand: Supplies Solution (4:21)
    • Lemonade Stand: Price Solution (1:02)
    • Lemonade Stand: Instantiating Price and Supplies Solution (3:25)
    • Lemonade Stand: Instantiating Tracking Values Solution (1:38)
    • Lemonade Stand: updateMainView Solution (5:11)
    • Lemonade Stand: showAlertWithText Solution (3:52)
    • Lemonade Stand: Use updateMainView Solution (1:18)
    • Lemonade Stand: startDayButtonPressed Solution (10:59)
    • Lemonade Stand: purchase IceCubes and Lemons Solution (4:36)
    • Lemonade Stand: unpurchase IceCubes and Lemons Solution (3:47)
    • Lemonade Stand: Mix Functions Solution (6:31)
    • Lemonade Stand: Clear Mix and Purchases Solution (1:35)
  • Add Weather
    • Lemonade Stand: Weather Properties Solution (1:58)
    • Lemonade Stand: Indexing into WeatherArray Solution (1:36)
    • Lemonade Stand: Using the Weather Array Solution (4:03)
    • Lemonade Stand: Add weatherImageView Solution (1:41)
    • Lemonade Stand: Adding Image Assets Solution (0:34)
    • Lemonade Stand: Displaying Weather Solution (1:46)
  • Task It Project!!
    • Task It: Setup Options (2:05)
    • Task It: Add a TableView (3:29)
    • Task It: Add a TableViewCell (3:02)
    • Task It: UITableViewDataSource and UITableViewDelegate (8:23)
    • Task It: TableView Outlet Hookup (1:19)
    • Task It: Updating UITableViewDataSource Delegate (2:26)
    • Task It: Setting up Prototype Cell (5:15)
    • Task It: Updating UITableViewDataSource (7:29)
    • Task It: Adding Labels to the TaskCell (5:19)
    • Task It: Adding Tasks (11:29)
    • Task It: TaskModel (2:18)
    • Task It: Implementing the TaskModel (4:20)
    • Task It: TaskDetailViewController (7:11)
    • Task It: didSelectRowAtIndexPath (2:54)
    • Task It: PrepareForSegue (8:04)
    • Task It: Updating the DetailTaskViewController (3:09)
    • Task It: Date Class (5:48)
    • Task It: Updating Dates (1:41)
    • Task It: NSDate to String (4:53)
    • Task It: Update DatePicker (1:04)
    • TaskIt: AddTaskViewController and Storyboard Changes (6:54)
    • Task It: Dismiss and Pop ViewControllers (7:57)
    • Task It: AddTaskViewController Setup (2:05)
    • Task It: Add a Task (4:39)
    • Task It: AddTask Segue (3:12)
    • Task It: ViewDidAppear (3:09)
    • Task It: Passing the ViewController to the TaskDetailViewController (1:19)
    • Task It: Pop the TaskDetailViewController (2:00)
    • Task It: Update Tasks (3:39)
    • Task It: Organize Tasks by Date (8:16)
    • Task It: TaskModel Completion (3:08)
    • Task It: Creating a BaseArray (2:34)
    • Task It: Updates with the Base Array (5:14)
    • Task It: Finish Fixing the Errors (3:50)
    • Task It: Adding Section Headers (2:01)
    • Task It: Completing Tasks (4:41)
    • Task It: Uncompleting Tasks (3:16)
  • TaskIt Coredata
    • Task It: Getting Ready for CoreData (1:25)
    • Task It: Setting up the CoreData Stack (9:36)
    • Task It: Setting up the new TaskModel (5:08)
    • Task It: Creating and Accessing a TaskModel (12:00)
    • Task It: Setting Up the FetchedResultsController (10:25)
    • Task It: Updating the UITableView DataSource Functions (6:37)
    • Task It: Updating prepareForSegue and Removing MainVC Properties (1:33)
    • Task It: Updating doneBarButtonItemPressed Function (2:46)
    • Task It: Adding Completion Sort Descriptor (3:49)
    • TaskIt: A Little Break
  • Exchange 'A' Gram
    • ExchangeAGram: Introduction
    • ExchangeAGram: Setup (5:15)
    • ExchangeAGram: Storyboard Updates (4:15)
    • ExchangeAGram: UICollectionViewDataSource (4:20)
    • ExchangeAGram: FeedCell (5:26)
    • ExchangeAGram: CameraController (9:56)
    • ExchangeAGram: Photo Library (6:27)
    • ExchangeAGram: didFinishPickingImage (4:06)
    • ExchangeAGram: Creating a FeedItem (2:14)
    • ExchangeAGram: Persisting a FeedItem (6:38)
    • ExchangeAGram: NSFetchRequest (6:05)
    • ExchangeAGram: Displaying the FeedItem (8:05)
  • ExchangeAGram: Photo Filters
    • ExchangeAGram: FilterViewController (1:53)
    • ExchangeAGram: didSelectItemAtIndexPath (1:52)
    • ExchangeAGram: Presenting the FilterViewController (2:56)
    • ExchangeAGram: Begin Creating a UICollectionView (7:33)
    • ExchangeAGram: Finishing the UICollectionView (1:33)
    • ExchangeAGram: FilterCell (7:25)
    • ExchangeAGram: Implementing our FilterCell (4:22)
    • ExchangeAGram: PhotoFilters (5:10)
    • ExchangeAGram: Properties of CIFilters (6:28)
    • ExchangeAGram: Composite Filters (4:31)
    • ExchangeAGram: Using the Filters (6:58)
    • ExchangeAGram: Implementing our Filters (4:08)
    • ExchangeAGram: Intro to GCD (8:24)
    • ExchangeAGram: Was that extra work in filteredImageFromImage worth it? (2:09)
    • ExchangeAGram: Upgrading to XCode 6.1 (5:12)
    • ExchangeAGram: Adding a ThumbNail to the FeedItem (4:31)
    • ExchangeAGram: Cleaning out the Old App (1:40)
    • ExchangeAGram: Creating and Saving a ThumbNail (1:56)
    • ExchangeAGram: Implementing our ThumbNail (1:48)
    • ExchangeAGram: Additional Optimizations (2:51)
    • ExchangeAGram: Cache (4:23)
    • ExchangeAGram: Cache Image (7:31)
    • ExchangeAGram: getCachedImage (3:58)
    • ExchangeAGram: Implementing Caching (2:28)
    • ExchangeAGram: Saving our Filter Choice (5:47)
    • ExchangeAGram: Adding a Profile ViewController (2:49)
    • ExchangeAGram: Adding Elements to the Profile ViewController (2:57)
  • ExchangeAGram: Adding Facebook Functionality
    • ExchangeAGram: Install the Facebook SDK (2:55)
    • ExchangeAGram: Obtain a FacebookAppID (3:13)
    • ExchangeAGram: Add the Facebook SDK (1:07)
    • ExchangeAGram: Setting up the PList (3:43)
    • ExchangeAGram: Bridging Header (3:26)
    • ExchangeAGram: Prep the AppDelegate with Facebook (1:36)
    • ExchangeAGram: FacebookLoginView (2:31)
    • ExchangeAGram: FacebookLoginViewDelegate (2:00)
    • ExchangeAGram: Delegate Prep (3:05)
    • ExchangeAGram: Hiding and unhiding our imageView and nameLabel (2:33)
    • ExchangeAGram: Finishing up our Delegates (4:54)
    • ExchangeAGram: Profile Segue and Testing (2:04)
    • ExchangeAGram: Advanced UIAlertController (5:48)
    • ExchangeAGram: Finishing UIAlertController (6:23)
    • ExchangeAGram: Refactoring didSelectItemAtIndexPath (3:14)
    • ExchangeAGram: Setup ShareToFacebook Function (1:15)
    • ExchangeAGram: Finish shareToFacebook Function (5:27)
    • ExchangeAGram: Call ShareToFacebook Function (0:36)
    • ExchangeAGram: Saving Captions (2:56)
    • ExchangeAGram: Testing this out (2:38)
  • ExchangeAGram: Adding MapKit
    • ExchangeAGram: Adding a MapViewController (6:23)
    • ExchangeAGram: Adding MapKit (2:09)
    • ExchangeAGram: CLLocationManager (5:29)
    • ExchangeAGram: Location Permission (5:16)
    • ExchangeAGram: Update Model (2:33)
    • ExchangeAGram: Saving the location (1:11)
    • ExchangeAGram: ProfileVC to MapVC Segue (0:56)
    • ExchangeAGram: Add an Annotation (5:46)
    • ExchangeAGram: Make Request For FeedItems (4:40)
    • ExchangeAGram: Display Photos (4:30)
    • ExchangeAGram: Testing the Map (1:16)
    • ExchangeAGram: Final Adjustments to our Model (4:28)
    • ExchangeAGram: Adding a Unique ID (1:44)
    • ExchangeAGram: Implementing our Unique ID (1:39)
    • ExchangeAGram: Fixing the Image Orientations (8:48)
    • ExchangeAGram: Adding Assets and Splash Screen (2:11)
    • ExchangeAGram: Updating the FeedViewController Background (2:12)
    • ExchangeAGram: Updating the Profile ViewController (4:10)
  • Auto Layout Demo
    • Auto Layout: What is it? (3:02)
    • Auto Layout: Pinning (3:46)
    • Auto Layout: Between Views (2:55)
    • Auto Layout: Basic Project, Part1 (5:33)
    • Auto Layout: Basic Project, Part 2 (1:44)
    • Auto Layout: Basic Project, Part 3 (1:52)
    • Auto Layout: Second Project, Part 1 (3:06)
    • Auto Layout: Second Project, Part 2 (3:31)
    • Auto Layout: Second Project, Part 3 (3:03)
    • Auto Layout: Second Project, Part 4 (6:35)
  • ExchangeAGram Final Touches
    • ExchangeAGram: Adding App Icons (1:25)
    • ExchangeAGram: Launch Screen (2:32)
    • ExchangeAGram: Auto Layout FeedViewController and MapViewController (2:54)
    • ExchangeAGram: AutoLayout ProfileViewController (5:41)
  • Task It: Advanced Functionality
    • Task It: Fix TableView Headers (7:18)
    • Task It: Fixing Task Completion (1:40)
  • Login Functionality Project
    • Login Project: Setup (9:27)
    • Login Project: Segue's (1:06)
    • Login Project: CreateAccountViewController (6:29)
    • Login Project: Create a Protocol in the CreateAccountViewController (5:49)
    • Login Project: Implement the Delegate (5:06)
    • Login Project: Use NSUserDefaults in the LoginVC (5:55)
    • Login Project: Use NSUserDefaults in the MainVC (3:27)
  • Task It: Advanced Functionality cont.
    • Task It: Setup the Settings ViewController (9:20)
    • TaskIt: Settings ViewController ViewDidLoad (7:47)
    • Task It: Capitalize TableView (9:31)
    • Task It: Complete NewTodo TableView (7:06)
    • Task It: Additional UITableView DataSource Functions (2:37)
    • Task It: SettingsViewController didSelectRowAtIndexPath (5:12)
    • Task It: AppDelegate Settings (5:30)
    • Task It: Implementing our Settings (3:23)
    • Task It: Protocol in the TaskDetailViewController (5:04)
    • Task It: Implementing the TaskDetailViewController Protocol (2:34)
    • Task It: Updating the taskDetailEdited function (2:50)
    • Task It: Protocol AddTaskViewController (2:23)
    • Task It: Implementing AddTaskViewController Protocol Functions (5:25)
    • Task It: App Icon (1:39)
    • Task It: Splash Screen (1:33)
    • Task It: Setting Background Colors (4:16)
    • Task It: Implementing our Icons (2:03)
    • Task It: Updating the ViewController with AutoLayout (4:21)
    • Mini Project: Size Classes (11:31)
    • Task It: Updating the Settings ViewController with Size Classes (10:30)
    • Task It: One Fix For the Settings ViewController (0:59)
    • Task It: Updating the DetailTaskViewController with Size Classes (5:31)
    • Task It: Updating the AddTaskViewController with Size Classes (10:10)
  • iCloud (Optional Section)
    • Task It: Setting up Developer Account (3:29)
    • Task It: A Look at the Member Center (3:16)
    • Task It: Using Xcode To Setup Certificates Provisioning Profiles and our Device (3:20)
    • Task It: Adding iCloud Capability (1:57)
    • Task It: Adding the ModelManager Class (3:10)
    • Task It: A Look at Model Manager (6:59)
    • Task It: Implementing NSNotification Center iCloud (3:13)
    • Task It: Refactor Using our Model Manager (4:03)
  • Food Tracker Project: Introduction with HealthKit and more!
    • FoodTracker: Lets Get Started (3:33)
    • Food Tracker: DetailViewController (5:06)
    • Food Tracker: Conforming to Protocols for the ViewController (7:54)
  • Implementing UISearchController
    • Food Tracker: Start Setting up the SearchController (3:47)
    • Food Tracker: Finish Setting up the Search Controller (4:19)
    • Food Tracker: Arrays for the DataSource (4:58)
    • Food Tracker: How Many Rows? (2:04)
    • Food Tracker: Show Some Food (2:59)
    • Food Tracker: filterContentForSearch (4:47)
    • Food Tracker: updateSearchResultsForSearchController (2:38)
    • Food Tracker: ScopeButtonTitles (1:34)
  • Our first API
    • Food Tracker: Nutrionix_API (7:41)
    • Food Tracker: MakeRequest Get Request (5:44)
    • Food Tracker: Execute HTTP Get Request (4:41)
    • Food Tracker: AppID and AppSecret (2:37)
  • Post Request
    • Food Tracker: HTTP Post Request (10:01)
    • Food Tracker: Setup our NSURLSessionDataTask (6:51)
    • Food Tracker: Test Post HTTP Request (2:19)
    • Food Tracker: Setup a DataController (2:58)
    • Food Tracker: Completing jsonAsUSDAIDSearchResults (12:43)
    • Food Tracker: Error Handling When Making a Request (4:10)
    • Food Tracker: Handling the JSON Response (2:58)
    • Food Tracker: apiForSearchFoods TableView DataSource (5:43)
    • Food Tracker: Update TableView With apiSearchForFoods (3:33)
    • Food Tracker: Selecting a Suggested Food (5:09)
    • Food Tracker: selectedScopeButtonIndexDidChange (1:49)
    • Food Tracker: Creating a USDAItem (5:44)
    • Food Tracker: start saveUSDAItemForId Function (4:22)
    • Food Tracker: Get the Correct Dictionary (2:54)
    • Food Tracker: Request USDAItems for idValue (5:32)
    • Food Tracker: Have we Already Saved this Entity? (2:34)
  • Saving USDAItems to CoreData
    • Food Tracker: Create a USDAItem (2:41)
    • Food Tracker: Start Updating the USDAItem (4:07)
    • Food Tracker: Saving our First Food Attribute (5:58)
    • Food Tracker: Saving Carbohydrates and Fat Total (5:01)
    • Food Tracker: Saving Cholesterol and Protein (3:57)
    • Food Tracker: Saving Sugar, Vitamin C, and Energy (6:58)
    • Food Tracker: Saving our USDA Item (0:38)
    • Food Tracker: Save a USDAItem (3:32)
  • Using our USDAItem
    • Food Tracker: Request USDAItems (4:02)
    • Food Tracker: Call requestFavoritedUSDAItems (1:28)
    • Food Tracker: Update UITableViewDataSource for Favorited USDAItems (1:38)
    • Food Tracker: Filter the FavoritedUSDAItems (3:53)
    • Food Tracker: Update UITableView DataSource for FilteredFavorited USDAItems (3:03)
    • Food Tracker: Add a USDAItem Property to the DetailViewController (0:58)
    • Food Tracker: Segueing from the Third ScopeButton (2:18)
    • Food Tracker: PrepareForSegue (2:25)
    • Food Tracker: Segueing from the Second ScopeButton (1:12)
  • NSNotificationCenter
    • Food Tracker: Post Notification with NSNotificationCenter (5:47)
    • Food Tracker: NSNotificationCenter in the ViewController (5:28)
    • Food Tracker: NSNotificationCenter in the DetailViewController (4:46)
    • Food Tracker: Deinit NSNotificationCenter and Test NSNotificationCenter (2:00)
    • Food Tracker: Setup createAttributedString (7:03)
    • Food Tracker: Show our USDAItem Title (2:56)
    • Food Tracker: Setup Additional Attribute Dictionaries (5:08)
    • Food Tracker: Begin Adding USDAItem Attributed Strings (7:12)
    • Food Tracker: Add Energy Fat and Protein attributedStrings (4:04)
    • Food Tracker: Add Sugar and VitaminC attributedStrings (4:19)
  • Saving our USDAItem to HealthKit
    • Food Tracker: Add HealthKit (1:58)
    • Food Tracker: HealthStore Class (1:44)
    • Food Tracker: Setup requestAuthorizationForHealthStore (6:46)
    • Food Tracker: HealthKit Authorization (3:33)
    • Food Tracker: Start saveFoodItem Function (4:33)
    • Food Tracker: Our First HKQuantitySample Energy (4:59)
    • Food Tracker: Adding HKQuantitySample Calcium and Carbohydrate (4:23)
    • Food Tracker: Adding HKQuantitySample FatTotal and Protein (2:41)
    • Food Tracker: Adding HKQuantitySample Sugar and Vitamin C (2:36)
    • Food Tracker: Adding HKQuantitySample Cholesterol (3:13)
    • Food Tracker: Saving HealthKit (5:29)
    • Food Tracker: Eating our Food and Testing Saving (2:19)
    • Food Tracker: Adding FoodMetaData and the Conclusion (3:06)
  • BitDate
    • BitDate: Introduction (2:26)
    • BitDate- Create a new Project (2:18)
    • BitDate- Create a CardView Class (12:23)
    • BitDate- CardView Constraints Part 1 (8:00)
    • BitDate- CardView Constrains Part 2 (8:15)
    • BitDate- Create SwipeView Class (6:19)
    • BitDate- SwipeView Constraints (4:59)
    • BitDate- Create CardsViewController (6:35)
    • BitDate- Add a frontCard and backCard (5:58)
    • BitDate- Add a PanGestureRecognizer to the SwipeView (6:31)
    • BitDate- Make the SwipeView Move (3:16)
    • BitDate- Add a Function to Reset the SwipeView's Original Position (2:15)
    • BitDate- Using UIPanGestureRecognizer's State (5:28)
    • BitDate- Adding a Rotation to our SwipeView (8:06)
    • BitDate- Fixing our Rotation Animation (1:35)
    • BitDate- Track Direction (4:06)
    • BitDate- Reset vs Animate ScrollView (2:02)
    • BitDate- Defining the SwipeViewDelegate (5:56)
    • BitDate- Calling our Protocol Function (6:04)
    • BitDate- Implementing our Protocol Functions (3:49)
    • BitDate- Decoupling CardView from the SwipeView (5:03)
    • BitDate- Adding a Card Struct (4:21)
    • BitDate- Refactor using the Card Struct (2:15)
    • BitDate- Create a Parse Account (5:54)
    • BitDate- Adding the Parse Framework (5:30)
    • BitDate- Setup the Bridging-Header File (4:11)
    • BitDate- Create a Facebook App (7:51)
    • BitDate- Install Cocoapods (3:15)
    • BitDate- Install Facebook SDK with Cocoapods (4:09)
    • BitDate- Test Parse (7:04)
    • BitDate- Facebook Login Handling in App Delegate (3:32)
    • BitDate- Create a Login ViewController (3:50)
    • BitDate- Logging in with Parse and Facebook (6:08)
    • BitDate- Adjusting the User on Parse (1:54)
    • BitDate- Saving User Details to Parse (10:41)
    • BitDate- Present Cards ViewController from LoginViewController (5:23)
    • BitDate- Updating the AppDelegate to be Dyamic (5:45)
    • BitDate- Create a User Struct (6:15)
    • BitDate- Decoupling the App Delegate (0:55)
    • BitDate- Create a ProfileViewController (5:39)
    • BitDate- Download a Profile Picture (7:21)
    • BitDate- Update User Class in Parse (2:47)
    • BitDate- getPhoto with a Nested Function (4:28)
    • BitDate- Updating the Profile ViewController (6:22)
    • BitDate- Making the ViewController a PageViewController (3:59)
    • BitDate- setViewControllers in the PageViewController (5:09)
    • BitDate- Update Before and After ViewController (2:44)
    • BitDate- Add the PageController to the AppDelegate (1:04)
    • BitDate- Changing Transition Styles (2:11)
    • BitDate- Adding our Assets (5:01)
    • BitDate- Updating NavigationItems in the ProfileViewController (4:54)
    • BitDate- Updating NavigationItems in the CardsViewController (3:05)
    • BitDate- Go to Next and Previous ViewController (5:06)
    • BitDate- Implement Transition From NavigationItems (2:47)
    • BitDate- Adding New Users to Parse (5:16)
    • BitDate- Query for new PFUsers (6:32)
    • BitDate- Fetch Users in the CardsViewController (2:25)
    • BitDate- Adding a Name and Image property to our CardView (2:05)
    • BitDate- Update createCards function and Add popCard Function (5:16)
    • BitDate- Creating cards with the popCard Function (5:35)
    • BitDate- Switching Cards (4:39)
    • BitDate- Starting an Overlay View (2:46)
    • BitDate- Finishing our Overlay (6:56)
    • BitDate- Save a Skip (4:25)
    • BitDate- Challenge - Saving a Like (0:22)
    • BitDate- Challenge - Solution Saving a Like (3:26)
    • BitDate- Fetching Users without an Action (6:29)
    • BitDate- Adding a nah and yeah Button (4:19)
    • BitDate- Implement nah and yeah Button Actions (3:50)
    • BitDate- Saving Matches (7:26)
    • BitDate- Adding a MatchesTableViewController (5:09)
    • BitDate- Add a Label and Image to the UserCell (3:51)
    • BitDate- Styling the UserCell and Updating the NavBar in the MatchesTableViewController (5:02)
    • BitDate- Presenting the MatchesTableViewController (2:43)
    • BitDate- Fetch Matches (6:48)
    • BitDate- Return a Matches Array (6:09)
    • BitDate- Fetching our Matches (2:22)
    • BitDate- Updating the TableViewDataSource Functions (6:31)
    • BitDate- Adding JSQMessagesViewController (3:12)
    • BitDate- Create a ChatViewController (4:41)
    • BitDate- Start Implementing the ChatViewController (5:05)
    • BitDate- Choosing a Bubble Color and Sending a Message (6:23)
    • BitDate- Presenting and Testing the ChatViewController (3:32)
    • BitDate- Introduction to Firebase (3:45)
    • BitDate- Install Firebase (1:50)
    • BitDate- Create a Message Struct (5:26)
    • BitDate- Adding Helper Functions to Message (4:22)
    • BitDate- Save a Message to Firebase (4:38)
    • Fetching our Messages from Firebase (7:52)
    • BitDate- Displaying and Testing our Fetched Messages (2:48)
    • BitDate- Create a MessageListner Class (7:06)
    • BitDate- Implement our MessageListener (3:12)
    • Congratulations! Next Steps + Resources

View Full Curriculum



Terms

  • Instant digital redemption