Find online courses made by experts from around the world.
Take your courses with you and learn anywhere, anytime.
Learn and practice real-world skills and achieve your goals.
Hi all, I'm currently updating my course materials for Swift 2 and iOS 9, but in the meantime if you'd like to get taste of developing apps as well as my teaching style I've decided to make this older course free!
In this iPhone programming tutorial for beginners, you'll learn iOS programming basic concepts that apply to all programming languages while giving you specific examples from Objective-C, a programming language of the iPhone/iPad.
Then we'll work through app-building exercises that help you to understand how to use some of the most popular features of Xcode and the iOS SDK.
Finally, there are lessons that help you with the tricky task of getting your apps running on actual iOS devices. With Apple's security features, it can be a bit difficult to run your app on a real iPhone. These lessons we'll help you understand how to do this simply and save you hours of time.
One great benefit of the “Learn iOS Programming” course is that students have access to the source code from the class exercises. The functioning code is free to use in your own projects.
Take this iPhone Programming Tutorial for Beginners course right now and learn iOS programming from scratch.</p>
Not for you? No problem.
30 day money back guarantee
Learn on the go.
Desktop, iOS and Android
Certificate of completion
|Section 1: Introduction|
Introduction to iOS SDK
Getting Started Quiz
|The best way to get started building apps is to jump into Xcode. In this lecture we'll build your first (admittedly simple) app and learn how to navigate around the Xcode software.|
|Now it's time to learn your first piece of Objective C code. This simple command will be your best friend as you learn to write great code.|
|Xcode has some great features to help you discover and fix errors in your code. Before we go too far into coding, let's learn to use 2 of these features that will save you some headaches.|
|Section 2: Introduction to Programming with Objective C|
Introduction to Programming
|"Variables" are key components of programming. In Objective C, primitive variables are very simple data types that don’t hold a lot of information. In this lesson we'll learn how they are used.|
|Lecture 7||2 pages|
|Here is a easy-to-use table that lists the primitive variable types and when each is appropriate to use.|
Working with the Assignment Operator
|Now that you're familiar with basic variable types in Objective C, you'll work with one of those types, integers, in Xcode.|
|Section 3: Objective C Basics|
In Objective C more complex pieces of data are stored in Objects (hence the name). So let’s talk about objects and what Object-Oriented Programming is all about.
|The first class we'll work with is Objective C's "NSString" class that enables you to make string objects. This lesson and the supplementary material will help you understand how words ands and phrases are handled in Objective C.|
|Lecture 12||3 pages|
|So far we have been using the [[alloc] init] structure without explaining what is really happening. This important section explains what this code does and makes the complicated concept of memory management simple to understand.|
|In this lesson you'll see just how different objects are from primitive variables. You'll learn how to do even more with the NSString class as well as learn how to use Xcode help documentation to learn about any class you want to use.|
|Now that you understand how to create NSString objects, it's time to move on to another commonly-used Objective C class, "NSArray." In this lesson I'll explain what makes arrays important.|
|Now that you know what arrays are. See how to use the NSArray class in Xcode to create array objects.|
|Dictionaries are very similar to arrays and are equally useful. In this lecture you'll learn how to use dictionaries when arrays aren't sufficient.|
Now that you understand why dictionaries are useful, see how to use the NSDictionary class in this example.
Objects Review Quiz
|Section 4: Conditional Programming & Loops|
As odd as it may sound, sometimes you don’t want the program to perform every line of code you write (to put it in more technical lingo, sometimes you don’t want your program to execute every line of code you write). Conditional Logic allows you to be more selective with how your code executes.
|In this lecture you'll see how to use an "If/Then" statement in Objective C. Then I extend the lesson to show you how to use an "Else" statement as well.|
|Lecture 20||6 pages|
Imagine you wanted to give a greeting for each passenger in our Airplane Passengers example. In a situation where you may have 10, 20, 100 different conditions, using very long If/Then statements are possible, but it is considered bad form. There is a much more efficient way to handle these situations which is called the Switch/Case statement.
Sometimes you want certain parts of your program code to run multiple times. Rather than repeating yourself, you can use what is called a “loop”. The next couple of lessons explain two different types of common looping structures. We'll start with "For" loops.
|Lecture 22||3 pages|
|This lesson describes how to use a different looping structure, a "While" loop.|
Conditional Programming & Loops Review
|Section 5: Custom Classes|
Now that you have a larger “vocabulary” of programming statements you are comfortable with, we’re going to return to the basics of Object Oriented Programming. This time, rather than using classes that are pre-written for, you are now going to create your own class (RaceCar) and to customize it.
|Now we'll use Xcode to create the Race Car class.|
Creating Your Race Car Class in Xcode 2
We can create car objects and set the color property of each car object. But our combat race cars don’t do anything. We need to add some ACTION to this combat race car game. The first thing we want our cars to do is to start racing. We are going to add a method to our RaceCar class to make our cars start racing.
|In this lesson we'll add to the Race Car class by creating methods that take additional information called arguments.|
In this lesson you'll learn how to create and use methods that take multiple arguments. In the supplementary material you'll find the final Xcode project for this series of lessons to check against your own code.
|A core concept in any object-oriented programming language, including Objective C, is the idea of Object Inheritance. In this lesson we'll add a new "Flying Race Car" class to our project the easy way by basing it off of our existing Race Car class.|
|Section 6: Login Demo App|
|Now that you know the basics of working with the Objective C programming language, we're going to apply those skills to build a simple app. The purpose of this app is to get you comfortable using basic user interface components.|
|The first step in building our app is laying out the user interface using the tools available in Xcode.|
|In this lesson you'll learn how to connect the user interface components you set up to your Objective C code.|
|Although the text field automatically displays a keyboard, getting rid of the keyboard is not so easy. In this lesson we'll learn how to use the help documentation to solve our first real problem. We'll also learn about the concept of a "First Responder" in iOS development.|
|Users also expect that the keyboard will go away when they tap somewhere outside of the text field. In this lesson you'll learn how to accomplish this by setting up an invisible button.|
In this lesson we'll be working with the text field delegate protocol - which is a fancy way of saying we'll be working with methods that help us react to certain text field events such as when the "Done" button is pressed.
|Now that the user interface is set up and we're assigned variable names to our UI objects, it's now time to write a method to control what happens when someone presses the login button.|
|In this lesson you'll learn how we're going to be checking the username and password. Disclaimer: a real login system would require some server-side setup which is a little more complicated than we want to get into at this point.|
|Every year, Apple makes some changes to the Objective C programming language. In this lesson we'll cover some recent changes to the language that makes it easier to declare arrays and dictionaries.|
|Section 7: Building Apps with Multiple Views|
|So far we have been working in situations were the app only has one screen. In this lesson you'll learn about the different ways to navigate between multiple screens in an app.|
|In this lesson we'll walk through presenting new views as modal views.|
|This time you'll learn how to use a navigation controller to navigate between multiple view controllers.|
|Section 8: Building Our 2nd App: Weather Forecasting|
Weather Forecast App Files
|In this lesson you'll learn about table views and the related protocols.|
|An easy way to work with table views is working with them using static cells. See how to do that in this lesson.|
Setting Up Dynamic Tableviews
Working with External Data via JSON
In this lesson we'll complete the weather forecasting app by working through the JSON data from Weather Underground. This lesson makes heavy use of arrays and dictionaries so you may want to practice with those data structures before this lesson.
|Section 9: Using Other Common Controls & Tasks|
|In this lesson you'll learn how to use the UISegmented control that allows users to select from a pre-defined list of options easily.|
|In this lesson you'll learn how to use the UIStepper control. This control allows users to easily increment or decrement number values. Because it has no way to display its current value, we'll be combining it with a UILabel control and you'll learn how to convert the UIStepper's number values into strings that can be displayed by a UILabel control.|
|The UIPickerView control looks like a spinning dial and makes it easy for users to pick a single value from a long list of possible options. Working with it however is a little tricky and more similar to working with a Tableview than other components. This lesson will teach you the basics of working with the control.|
|If you need to save simple information from your app to the device, such as user preferences, you can use the NSUserDefaults class to do so. This lesson will show you how easy it is to read and write data using that class. You'll also see how to set the selected segment of the Segmented Control programmatically.|
|The UICollectionView is a newer component that works much like a TableView control but instead of having one uniform column, you can have many columns and rows and customize each cell. This lesson will show you how to do it. (Note: You should make yourself comfortable with using Tableviews first.)|
|In this lesson you'll learn how to make the UICollectionView respond to user input.|
|While iOS apps have had the ability to share to social networks like Facebook and Twitter for a while, in iOS 6 this process became easier to implement. In this lesson you'll learn how to use the UIActivityViewController to enable your users to share text and images easily from your app with their friends.|
|Section 10: Working with PARSE Cloud Data Service|
|"Parse" a great 3rd Party service that easily allows you to build apps with server-side functionality without requiring you to learn how to set up server databases or learn new scripting languages.|
|While you can start a new app with Parse integrated into it by downloading the project from their website, integrating Parse into an existing app is a little more tricky. In this lesson I'll walk you through it.|
Save Data to the Cloud with Parse
|Section 11: Testing Your App on Real Devices|
|Getting your app to run in the iOS Simulator is easy. Getting it to run on an actual iPhone or iPad is a bit more complicated. This lesson introduces the 3 keys to testing your app successfully on devices.|
|A key to testing your apps on devices is getting your Apple Developer Certificate setup on your machine. This lecture will walk you through that process.|
|For those just getting started with Provisioning Profiles, Apple's Provisioning Profile Assistant is a good place to start. Learn how to use it in this lecture.|
Creating Provisioning Profiles Manually
Julian has been been developing web and mobile applications for over 10 years. He built his first website in 1995 and then spent several years building web applications with PHP/MySQL and Flash.
It was with Flash's Actionscript programming language that Julian learned about Object-Oriented programming. In 2010, he made the jump from web to mobile - first working with Appcelerator and then moving to fully native iOS app development with Objective C.
Julian currently lives in San Diego, California as a contract iOS developer and teaching live classes at SkillMasters.</p>
Hours of video content