Course Outline
Basic Concepts of Programming
- Object-Oriented Programming (OOP) concepts
- Understanding what software is
- Organized versus unorganized room concepts in programming
- The importance of software
Why Apple and iOS
- Reasons to choose iOS
- The history of Apple
- The history of iOS
- Apple’s Unique Selling Proposition (USP)
- What Apple is renowned for
- User Experience (UX) versus User Interface (UI)
Development Environment
- Requirements for the development environment
- Xcode and the iOS SDK
- Apple Developer Registration
- Common reasons for application rejection
- Human Interface Guidelines
Xcode iOS Projects
- Overview of Xcode
- Creating an iOS project
- Running applications on simulators and real devices
Swift Basics
- Transitioning from Objective-C to Swift
- Key features and advantages of Swift
- Variables
- Constants
- Hello World in Swift
- Creating a UILabel programmatically
Image Animation and Image Loading
- UIImageView
- Basic animations for UIView and UIImageView
- Using Playgrounds
- Lazy loading of images
- Lazy properties
Swift Classes and Scenes
- Creating Swift classes
- Memory management
- Strong and weak references
- Constructors and destructors in Swift
- Protocols, Hashable, and Printable
- Inheritance
- Creating scenes
- Implementing View Controllers
- Using Playgrounds
Life Cycle and Responder Chain
- View life cycle
- Application life cycle
- Responder Chain: touchBegan, touchMoved, and other methods
- NSTimer
Adaptive Layout
- Storyboards versus XIB files
- Support for multiple devices
- Icon sizing and device orientation
- Building user interfaces programmatically
- Outlets and actions
- Protocols: Required and optional
- Memory management
Notifications and Localization
- Push Notifications: Silent and standard
- Localization
Overview of Objective-C
- Properties
- Categories
- Function syntax
- Property attributes: readWrite and readOnly
Social Media Integration in iOS:
- Facebook Integration
- Twitter Integration
- Mail Integration
- Integrating third-party applications
UI Components in iOS:
- UITextField
- UITextView
- UISegmentedControl
- UISlider
- UISwitch
- UIProgressView
- UIPageControl
- UIStepper
- UIScrollView
- UIPickerView
- UIActionSheet
- UIWebView
- SearchBar
Additional Basic Components in iOS:
- Groups and folders
- Closures
- Tuples
- URLSession
- URLRequest
- UIAlertView
- UIActivityIndicatorView
- Access modifiers: internal, public, private
- Guard statements
- Optionals
Threading in iOS:
- Grand Central Dispatch (GCD)
- NSOperationQueue
- Main Thread and Background Threads
User Interaction
- Buttons and event handlers
- Pan gesture recognition
- Tap gesture recognition
- Custom Table Views
- Basics of Collection View
Multiple Screen Applications
- Table Navigation
- Tabbed Applications
- Navigation Controllers
- Presenting controllers with various animations during presentation and pushing
Location Services
- Position and altitude
- Compass direction
Device Access and Storage
- File Storage
- Music Library Access
- CoreData and SQLite in iOS
- Keychain
- User Defaults
- Property Lists (PLists)
- NSSearchDomain
- Directory concepts and application security via NSSearchDomain
Speech Framework
- Speech to text
- Text to Speech
Multipeer Framework
- Sending data between devices
- Connecting multiple devices
Networking
- Network Access
- Serializing and deserializing JSON
- REST Web Services
- Basics of XML Parsing
Uploading App to App Store
- iTunes Connect
- Developer Portal: Provisioning profiles
- Deployment and distribution
- Running apps on real devices
- Uploading applications to the App Store
Applications
- Dots Game: https://itunes.apple.com/app/the-dots-free/id850315430
- Notes app: Notes App
- Contacts App
- Retrieving data from an open API server, populating a table view, displaying details, implementing a search bar, and saving data offline using Core Data
- An application based on your own concept
Requirements
Participants must have prior experience with at least one programming language.
Testimonials (1)
He's an experienced trainer with a real life experience in the topic he was teaching. That led the course to cover the most important topics which interests any developer working in the field, and small details would be easily overseen if he was not working in this platform. Moreover, he was giving the course using the latest versions of is and Swift (10 \ 3) and that is a huge advantage to be adapting such new technology in short time.