Table of ContentsPreface 1 Chapter 1: Getting and Installing the iOS SDK Development Tools 7 Introduction 8Downloading and installing the iOS SDK 9Using Xcode to create an iOS project 14
Trang 3Xcode 4 Cookbook
Copyright © 2013 Packt Publishing
All rights reserved No part of this book may be reproduced, stored in a retrieval system,
or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.Every effort has been made in the preparation of this book to ensure the accuracy of the information presented However, the information contained in this book is sold without warranty, either express or implied Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals However, Packt Publishing cannot guarantee the accuracy of this information
First published: May 2013
Trang 4Indexer Monica Ajmera Mehta
Graphics Ronak Dhruv
Production Coordinator Manu Joseph
Cover Work Manu Joseph
Trang 5About the Author
Steven F Daniel is originally from London, England, but lives in Australia
He is the owner and founder of GENIESOFT STUDIOS (http://www.geniesoftstudios.com/), a software development company based in Melbourne, Victoria, that currently
develops games and business applications for the iOS, Android, and Windows platforms.Steven is an experienced software developer with more than 13 years of experience
developing desktop and web-based applications for a number of companies including, insurance, banking and finance, oil and gas, and local and state government
Steven is always interested in emerging technologies, and is a member of the SQL Server Special Interest Group (SQLSIG) and the Java Community He has been the co-founder and Chief Technology Officer (CTO) of SoftMpire Pty Ltd., a company that focused primarily on developing business applications for the iOS and Android platforms
He is the author of Xcode 4 iOS Development Beginner's Guide, iOS 5 Essentials, and iPad Enterprise Application Development Blueprints
You can check out his blog at http://geniesoftstudios.com/blog/, or follow him
on twitter at http://twitter.com/GenieSoftStudio
Trang 6No book is the product of just the author—he just happens to be the one with
his name on the cover A number of people contributed to the success of this
book, and it would take more space if I have to thank each one individually
A special shout-out goes to Mary Nadar, my acquisition editor, who is the
reason that this book exists Thank you Mary for believing in me and for
being a wonderful guide throughout this whole process I would like to thank
Amey Sawant for ensuring that I stayed on track and got my chapters in on
time, and to Dayan Hyames for his brilliant suggestive approach with the
chapter rewrites
I would also like to extend my thanks to each of my Technical Editors for
their brilliant suggestions and improvements to each chapter, as well as
ensuring that we met our timeframes, and delivery for this book It has
been a great privilege to work with each of you on this book
Lastly, to my reviewers, thank you so much for your valued suggestions and
improvements, making this book what it is I am grateful to each and every
one of you
Thank you also to the entire Packt Publishing team for working so diligently to
help bring out a high quality product Finally, a big thank you to the engineers
at Apple for creating the iPhone and the iPad, and providing developers with
the tools to create fun and sophisticated applications You guys rock
Finally, I'd like to thank all of my friends for their support, understanding,
and encouragement during the writing process It is a privilege to know
each and every one of you
Trang 7About the Reviewers
Bob Sander-Cederlof has been programming for over 55 years, including 21 years at Adobe Systems During the Apple II era, as owner of S-C Software Corporation, Bob published the Apple Assembly Line newsletter for over eight years, along with software such as
the S-C Macro Assembler Other interests include Christianity, the Bible, and genealogy More at http://www.txbobsc.com
Dave Hersey has over 35 years of experience in Apple software development, dating back
to the Apple II personal computer in 1977 In 2000, after over 6 years in software engineering
at Apple Computer, Dave started Paracoders Inc focusing on custom Mac OS X-based
application and driver development In 2008, Dave's company expanded into iOS (iPhone) mobile applications, followed by Android applications soon after Some big-named clients including Paramount Home Entertainment, Lionsgate Entertainment, Seagate, Creative Labs, Monterey Bay Aquarium, and Kraft Foods Most recently, Dave's business has expanded to include additional mobile and server-side platforms as well as support services As a result, the custom software development division of Paracoders now operates as "Torchlight Apps" (http://www.torchlightapps.com)
Dave was also a technical reviewer for Creating Games with cocos2d for iPhone 2 and HTML5 Game Development with GameMaker When he's not learning new technologies, developing software, or reviewing books, Dave stays busy with his wife raising three children, three dogs, two parakeets, and about 22 ducks at last count
Trang 8France in the Paris area.
Jean-Yves has been in the IT industry for more than 30 years, working on many technologies and languages from Mainframes MVS to Unixes Mac IOS and Android in Assembly Java, C++, and Objective-C He has written articles for Linux Journal, C++ users Journal, and Dr Dobbs journal
I would like to thank my beloved wife Martine, for supporting my work during
all those years, and and my family Jean-Christophe, Aline, Mathieu, and Julie,
who I love you
Robert Wohnoutka is an independent software developer with over 20 years of software development experience He currently has 11 iPhone apps in the Apple app store
Robert is a former Apple employee where he learned the importance of ease-of-use which
is the first rule he applies in all the apps that he develops He also has over 20 years of Product Marketing experience with high-tech products where the ease-of-use aspect was his guiding light as he helped companies develop and introduce new technologies into the hands of consumers
My Walks is a good example of an app Robert developed where he applied the ease-of-use principal to a GPS-based walking application This app only requires the user to tap a Start button to start the walk and the app will automatically detect the end of the user's walk should the user forget to tap the End button My Walks was featured in the Best Mobile Apps
2013 book by Jeremy J Warner and published by Portrait Health Publishing Inc Robert has also developed a version for bicycling named My Bike Rides and a version for skiing named
My Ski Runs
Robert has developed a number of very easy to use money management apps including
EZ Adder, EZ Adder II, EZ Balances, EZ Balances II, and EZ2Compare2 He also develops customized apps including an iPhone app for his dentist's clients called Nikki Green DDS
Trang 9Support files, eBooks, discount offers and more
You might want to visit www.PacktPub.com for support files and downloads related to your book
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy Get in touch with us at
service@packtpub.com for more details
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks
f Fully searchable across every book published by Packt
f Copy and paste, print and bookmark content
f On demand and accessible via web browser
Free Access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access
Trang 10To my favorite uncle Benjamin Jacob Daniel, for always making me smile and for inspiring me to work hard and achieve my dreams, I miss you a lot.
Chan Ban Guan, for the continued patience, encouragement and support, and most of all for believing in me during the writing phase of this book.
To my family for always believing in me and for their continued love and support.
To my niece Ava Madison Daniel thank you for continually bringing joy to our family.
To the late Steve Jobs, you will always be an inspiration and a guide towards perfection Thank you for all the amazing things you've brought to our lives
May you rest in peace.
This book would not have been possible without your love and understanding.
I would like to thank you from the bottom of my heart.
Trang 12Table of Contents
Preface 1 Chapter 1: Getting and Installing the iOS SDK Development Tools 7
Introduction 8Downloading and installing the iOS SDK 9Using Xcode to create an iOS project 14Using Interface Builder to create the user interface 19Building the user interface for our application 22Creating outlets to Interface Builder objects 24Creating actions that respond to user actions 28
Using the iOS Simulator to test your applications 32Configuring and using compiler directives 34Debugging your iOS applications using Xcode 39Using the Clang Static Analyzer to examine your code 41
Introduction 45Adding and customizing views 46Using labels to display text 48Obtaining user input through the use of buttons 51Displaying an image within the view 53Displaying and editing text 55Using the iOS device keyboard 59Displaying the progress to the user 61Adding a toolbar to a view 66
Creating a custom table view controller 71Adding a table view to a view controller 72
Trang 13Chapter 3: Using Storyboards 79
Introduction 79Configuring storyboards for a project 80Creating a Twitter application 82Creating storyboard scenes 84Configuring storyboard scenes 87Applying transitions to storyboards 92
Preparing transition to another view controller 106Presenting storyboard view controllers programmatically 109
Introduction 113Introducing Xcode Instruments 114
Running and profiling an iOS project 120Detecting virtual memory faults 125
Handling compile-time errors 134Adding and configuring Instruments 136
Chapter 5: Working with the Location Services and the
Introduction 141Adding the CoreLocation and MapKit frameworks 142Building a simple CoreLocation application 144Determining the current GPS location 148Adding and working with the MapView control 153Adding overlay regions to maps 156Adding annotation placeholders to the map 159Reversing geocode address information 167Working with the different map types 171
Chapter 6: Storing Documents within the Cloud 177
Introduction 177Storing and using documents within iCloud 178Working with the iCloud storage APIs 181Detecting file version conflicts within iCloud 184Building the iCloud application 186
Trang 14Requesting entitlements for iCloud storage 199Configuring iOS devices to use iCloud 204
Chapter 7: Working with Different Multimedia Resources 207
Introduction 207Selecting images and video from the camera roll 208Capturing media with the camera 211Playing video with Apple TV integration 215Playing music using the MediaPlayer framework 219Using the iOS device's microphone to record 222
Drawing and filling shapes 235Applying color effects using Core Image 237Applying transition effects 242
Chapter 8: Working with the CoreData and GameKit Frameworks 245
Introduction 246Adding the GameKit and MessageUI frameworks 246Building the Core Data data model 247Creating the Core Data model files 249Adding and configuring the Storyboard 252Creating the Books Library user interface 254Displaying data within the Table View 258Inserting data within our Core Data data model 261Delete an item from the Table View using Core Data 264Reordering rows within a Table View 265Filtering and searching for data within a Table View 268Working with the different keyboard styles 271Transferring data to another device using bluetooth 273Implementing e-mail messaging 280
Chapter 9: Creating a Social Networking App with the
Introduction 285Downloading the Facebook iOS SDK 286Registering your iOS applications with Facebook 288Building a simple social networking application 292Adding the Facebook SDK and dependencies to your project 295Implementing the Single Sign On (SSO) feature 298
Trang 15Implementing the View Controller class 304Requesting additional Facebook permissions 308Using the Graph API to read JSON data 311Integrating with the Facebook social channels 315Handling Facebook errors within your application 318
Chapter 10: Packaging and Deploying Your Application 323
Introduction 324Setting up your iOS development team 324Creating the iOS development certificate 329Obtaining the development certificate from Apple 331Registering your iOS devices for testing 335Creating your application App IDs 337Creating the development provisioning profiles 340Using the provisioning profile to install the app on an iOS device 343Preparing an application for submission to the App Store using
Archiving and submitting apps using Xcode 4 351
Appendix: Exploring the MultiTouch Interface 355
Introduction 355Sensing the movement and device orientation 356Using the shake gesture with the touch interface 358Detecting device touches with the touch interface 362Sensing movement with the accelerometer input 365Working with the iOS device gyroscope 370
Index 375
Trang 16The Xcode 4 Cookbook provides you with the skills and knowledge, and practical recipes
on how to go about developing useful applications that can be used within the industry
By using this cookbook's step-by-step style approach, presenting examples in the style
of recipes, allowing you to go directly to your topic of interest, or follow topics throughout
a chapter to gain in-depth knowledge, you will gain the skills needed to develop some
stunning applications
This cookbook is a practical guide featuring over 100 recipes that show you how to build your own fun and exciting iOS applications by integrating iCloud, Facebook, Mobile core services, Core Image and Media Player Frameworks, and the Core Graphics and Core
Motion frameworks, that will enable you to enhance your applications to create some
amazing image and transition effects using the built-in image filters
In this book, I have tried my best to keep the code simple and easy to understand I have provided step-by-step instructions with loads of screenshots at each step to make it easier
to follow You will soon be mastering the different aspects of iOS 6 programming, as well
as mastering the technology and skills needed to create some stunning applications
Feel free to contact me at geniesoftstudios@gmail.com for any queries, or if you just want to drop by and say "Hello" Any suggestions for improving this book will be highly regarded
Trang 17What this book covers
Chapter 1, Getting and Installing the iOS SDK Development Tools, introduces the developer
to the Xcode developer set of tools, as well as the capabilities of the iOS Simulator and each
of the layers contained within the iOS architecture, before finally looking at how to create a simple Hello World iOS application
Chapter 2, User Interfaces – Creating the UI, introduces the concept of views and how they
are part of a complete iOS application Exploring a large number of various view components, you will create different applications that will help you understand how each component works We will also learn about the Model View Controller (MVC) pattern and how to use it
to create applications suitable for enhanced user experience Through this chapter, you will also learn about the most useful controllers, which will be part of many of your projects in the future
Chapter 3, Using Storyboards, gains an understanding of what Storyboards are and how we
can apply the various transitions between views We will take a look into how we are able to create and configure scenes and storyboard files, to present these programmatically Finally,
we will learn how to integrate Twitter capabilities into our application to tweet photos and standard messages using the new iOS 6 Social frameworks
Chapter 4, Using Xcode Instruments, focuses on how to effectively use Instruments within
our applications to track down memory leaks and eliminate bottlenecks that could potentially cause our application to crash on the user's iOS device We will also take a look at how to add and configure instruments, as well as learn how to use the System Trace Instrument to monitor system calls and track down performance issues within the application
Chapter 5, Working with the Location Services and the MapKit Frameworks, introduces
a detailed guide for using the built-in location services to create applications that provide location information to the user You will not only learn how to use the GPS hardware, but also how to display maps and layout information using Overlays
Chapter 6, Storing Documents within the Cloud, introduces you to the benefits of using
iCloud, and how to incorporate iCloud functionality into your applications to store and retrieve files, and its data through the use of the Storage APIs This chapter will also give you some insight into how to go about handling file version conflicts when multiple copies of the same file are being updated on more than one iOS device
Chapter 7, Working with the Different Multimedia Resources, focuses on teaching you to
create applications that capture, reproduce, and manage multimedia content through the device's hardware You will not only learn to use the camera to capture images and videos but also how to play back and record audio We will also learn how to implement the different image filter effects and transition animations to produce a water ripple effect, as well as learning how to incorporate Airplay functionality into our application
Trang 18Chapter 8, Working with the CoreData and GameKit Frameworks, focuses on showing you
how to use the Core Data framework to create a simple Books Library application, to directly interface with a SQLite database, to create and store book details We will also look at how to incorporate Bluetooth functionality, so that you can send book details to another iOS device, and have this information received wirelessly and stored within the database at the other end
Chapter 9, Creating a Social Networking App with the Facebook iOS SDK, shows you how to
download the Facebook SDK and register your application with Facebook It also shows you how to use the Facebook APIs to integrate Facebook functionality into your app, using the Single Sign On (SSO) feature This provides users the ability to sign into your application using their Facebook identity, so that they can submit notification requests, or submit content to their wall We will learn how to use the Open Graph API and Facebook Query Language (FQL)
to pass SQL Query like syntax to retrieve information about the current user, and learn how
to cleanly handle Facebook errors within our iOS applications
Chapter 10, Packaging and Deploying Your Application, walks you through the required
steps to deploy your finished application to devices, as well as showing you how to prepare and distribute it to the App Store We will also take a look at how to create and obtain
provisioning profiles for both development and distribution
Appendix, Exploring the MultiTouch Interface, discusses how to create applications that
are fully aware of their surrounding environment, through the device's sensors You will learn to adjust the user interface according to device orientations and how to respond to accelerometer and gyroscope events You will also learn about the built-in shake gesture, and how to go about responding to the shake motions
What you need for this book
The minimum requirement for this book is an Intel-based Macintosh computer running Mac
OS X Snow Leopard (10.6.*) or Lion (10.7.*) I would highly recommend upgrading to Lion
or Mountain Lion, as there are many new features in Xcode that are available only to these two operating systems
We will be using Xcode 4.6.2, which is the integrated development environment used for creating applications for iOS development Almost all projects you will create with the help
of this book will work on the iOS Simulator However, some projects will require a device
to work correctly You can download the latest version of Xcode at the following link:
http://developer.apple.com/xcode/
Trang 19Who this book is for
If you ever wanted to build applications that interact with Facebook, iCloud, Core Location, and the Core Motion frameworks into your own applications then this book is for you You should have a good knowledge and programming experience with Objective-C and have used Xcode 4 and iOS 5
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information Here are some examples of these styles, and an explanation of their meaning.Code words in text are shown as follows: "Whenever compiler directives are used in
Objective-C, they are responsible for responding to and executing the associated snippets
of code encapsulated within the #ifdef and #endif tags"
A block of code is set as follows:
- (IBAction)btnTapHere:(id)sender {
NSString *greeting = [NSString stringWithFormat:@"Welcome
To Xcode 4 Cookbook series %@ %@",txtFirstname.text, txtSurname.text];
lblOutput.text = greeting;
lblOutput.font = [UIFont boldSystemFontOfSize:21];
lblOutput.textColor = [UIColor blueColor];
}
When we wish to draw your attention to a particular part of a code block, the relevant lines
or items are set in bold:
// SecondViewController.h
// TwitterExample
//
// Created by Steven F Daniel on 21/09/12.
// Copyright (c) 2012 GenieSoft Studios All rights reserved.
#import <UIKit/UIKit.h>
@interface SecondViewController : UIViewController<UIAlertViewDelegate>
@end
Trang 20New terms and important words are shown in bold Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: " To continue execution of your application, click on the Continue program execution button".
Warnings or important notes appear in a box like this
Tips and tricks appear like this
Reader feedback
Feedback from our readers is always welcome Let us know what you think about this
book—what you liked or may have disliked Reader feedback is important for us to develop titles that you really get the most out of
To send us general feedback, simply send an e-mail to feedback@packtpub.com, and mention the book title via the subject of your message
If there is a topic that you have expertise in and you are interested in either writing or
contributing to a book, see our author guide on www.packtpub.com/authors
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you
to get the most from your purchase
Downloading the example code
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly
to you
Trang 21Although we have taken every care to ensure the accuracy of our content, mistakes do happen
If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us By doing so, you can save other readers from frustration and help us improve subsequent versions of this book If you find any errata, please report them
by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the erratasubmissionform link, and entering the details of your errata Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title Any existing errata can
be viewed by selecting your title from http://www.packtpub.com/support
Piracy
Piracy of copyright material on the Internet is an ongoing problem across all media At Packt,
we take the protection of our copyright and licenses very seriously If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy
Please contact us at copyright@packtpub.comwith a link to the suspected pirated material
We appreciate your help in protecting our authors, and our ability to bring you valuable content
Questions
You can contact us at questions@packtpub.com if you are having a problem with any aspect of the book, and we will do our best to address it
Trang 22Getting and Installing
the iOS SDK Development Tools
In this chapter, we will cover:
f Downloading and installing the iOS SDK
f Using Xcode to create an iOS project
f Using Interface Builder to create the user interface
f Building the user interface for our application
f Creating outlets to Interface Builder objects
f Creating actions that respond to user actions
f Compiling your project
f Using the iOS Simulator to test your applications
f Configuring and using compiler directives
f Debugging your iOS applications using Xcode
f Using the Clang Static Analyzer to examine your code
Trang 23Welcome to the exciting world of iOS programming using iOS 6 This latest release of the mobile operating system is packed with some great new features and improvements, and comes with over 200 new features as well as an updated SDK featuring over 1,500 new development APIs that can be incorporated into your applications
In this chapter, we will look at what integrated development environments (IDEs) and software development kits (SDKs) are needed to develop applications for the iOS platform, Apple's operating system for mobile devices We will explain the importance of each tool's role in the development cycle, before finally developing our first application The tools that are required to develop applications for the iOS platform are explained, as follows:
f An Intel-based Mac computer running the Snow Leopard (10.6.*), Lion (10.7.*),
or OS X Mountain Lion (10.8.*) operating system: The essential development tools cannot be installed on any other computer platforms, so if you are running another processor type (such as the older Mac G4 or Mac G5), you're out of luck
f iOS 5 SDK (or higher): In order to download the Apple iOS SDK, you must be
registered as an Apple developer The iOS SDK consists of the following components:
Component Description
Xcode This is the main IDE that enables you to develop, edit, and debug
native applications for the iOS and Mac platforms using the Objective-C programming language
iOS Simulator This is a Cocoa-based application that enables you to debug your
iOS applications on the computer, without the need of having an iOS device There are many iOS features that simply won't work within the Simulator, so a device is required if an application uses those features, that is, the Core Location and MapKit frameworks.Instruments These are the analysis tools that help you optimize your
applications and monitor for memory leaks during execution of your application at real time
Dashcode This enables you to develop web-based iOS applications and
dashboard widgets
Trang 24Downloading and installing the iOS SDK
This recipe includes information on how to sign up to the Apple Developer Program, as well as how to download and install the necessary tools needed to develop applications using Xcode
Getting ready
Before you can start building iOS applications, you must first join up as a registered user
of the iOS Developer Program in order to download all of the necessary components to our computer At the time of writing, the latest version is 4.5.2, and iOS SDK's latest version is 6.x The registration process is free, and provides you access to the iOS SDK and other developer resources that are really useful for getting you started
The following short list outlines some of the things that you will be able to access when you become a member of the iOS Developer Program:
f Helpful getting started guides to help you get up and running quickly
f Helpful tips that show you how to submit your apps to the App Store
f Ability to download current releases of the iOS software
f Ability to beta test releases of iOS and the iOS SDK
f Access to the Apple Developer Forums
Whether you are developing applications for the iPhone or iPad, these use the same operating system (OS) and iOS SDK
to allow you to create universal applications that will work with both the iPhone and iPad running on iOS 4.3.* and above
Trang 25and then click on the Log in button to proceed, as shown in the following screenshot:
2 Once you have signed up, you will then be able to download the iOS SDK and proceed with installing it onto your computer
3 Xcode can also be obtained from the Mac App Store at the following link
http://itunes.apple.com/us/app/xcode/id497799835?mt=12, depending
on whether you have chosen the version for Mac OSX Lion The installation procedure
in the remaining steps shows how to go about installing the iOS development tools for
Trang 264 Once you have downloaded the SDK for Snow Leopard, you can proceed with
installing it You will be required to accept a few licensing agreements Once you have done that, all you need to do is select the destination folder of the installation and click on the Continue button
5 If you select the default settings during the installation phase, the various tools will be installed in the /Developer/Applications folder The installation
process takes you through the custom installation options screen, as shown in the following screenshot:
These options give you a little more control over the installation process For example, you are able to specify the folder location in which you would like to install Xcode, as well as settings for a variety of other options
Trang 27How it works
Now that everything has been installed and is ready to go, our next step is to take a look at what each component within the Xcode and iOS SDK is needed for
As mentioned in the Introduction section of this chapter, the iOS SDK is made up of three
important components The main component, Xcode IDE, is Apple's IDE that allows for developing applications for the iOS and Mac platforms, and uses Objective-C as the default programming language
This environment allows for better integration and editing of source code, and building, compiling, and debugging your applications It contains a number of tools that can help with diagnosing issues with your iOS applications The topic on instruments, will be covered later
on in this book The IDE contains a device information window, called Organizer – Devices, which is shown in the following screenshot:
Trang 28This screen is necessary to install the various certificates and provisioning profiles that are required for deploying an application onto a device for testing, or distribution through the Apple App Store Using the Organizer – Devices window, you can view debugging information
of your applications, crash logs, as well as the ability to take screenshots from the device
f Interface Builder: This is the user interface designer that is integrated within the IDE Interface Builder provides you with all the necessary functionality to construct an application's user interface All of your objects are stored within one or more resource files and contain the associated relationship to each of the objects Any changes that you make to the form design are automatically synchronized back to your code
f iOS Simulator: This is an extremely useful tool that acts as a testbed for your
applications without the need for using an actual device, whether an iPad or any other iOS device Whenever you build and run your application, Xcode installs your application on the iOS Simulator and launches this for you automatically
The iOS Simulator has the capability of simulating the different iOS versions, and this can become extremely useful if your application needs to be installed on different iOS platforms, as well as testing and debugging errors reported in your applications when run under the different iOS versions
f The Compiling your project recipe
f The Debugging your iOS applications using Xcode recipe
f The Using provisioning profiles to install an iOS app on an iOS device recipe in
Chapter 10, Packaging and Deploying Your Application
f The Submitting an application to the App Store using iTunes Connect recipe in
Chapter 10, Packaging and Deploying Your Application
Trang 29Using Xcode to create an iOS project
In this recipe, we will see how easy it is to create our very first iOS application project using the Xcode IDE
Getting ready
Now that we have all of the preliminary components installed, we will start to create our very first HelloWorld project using Xcode
How to do it
To begin with creating a new Xcode project, perform the following simple steps:
1 Launch Xcode from the /Developer/Applications folder
2 Choose Create a new Xcode project, or File | New Project
3 Select Single View Application from the list of available templates, as shown in the following screenshot:
Trang 304 Click on the Next button to proceed to the next step in the wizard.
5 Next, enter HelloWorld as the name of your project
6 Select iPhone from under the Devices drop-down menu
7 Ensure that the Use Storyboards checkbox has not been checked
8 Ensure that the Use Automatic Reference Counting checkbox has been checked
9 Ensure that the Include Unit Tests checkbox has not been checked
The Company Identifier for your app needs to be unique
Apple recommends that you use the reverse domain style (for example, com.domainName.appName)
10 Click on the Next button to proceed to the next step in the wizard
11 Specify the location where you would like to save your project
12 Then, click on the Create button to save your project at the specified location
Trang 31Once your project has been created, you will be presented with the Xcode development
environment, along with the project files that the template created for you If you want, you can build and run the application The iOS Simulator will start and show a blank white screen
How it works
Now that we have created our HelloWorld project, let's take the time to see what the template wizard created for us
When Xcode creates a new iOS project, it also creates a series of files Depending on
what options have been selected during this process may result in some additional files being created
The following screenshot shows a list of the essentials files that form part of an iOS project:
Trang 32The following are the important files to take a note of:
f main.m
f AppDelegate.h and AppDelegate.m
f ViewController.h and ViewController.m
f HelloWorld-info.plist
main.m
The main function is where the runtime lifecycle of your program starts and ends The
UIApplicationMainstarts function runs the loop that is responsible for sending
notifications to the application through the AppDelegate class, and contains the various event handlers that can be overridden This function takes four parameters and uses them to initialize the application
// main.m
// HelloWorld
//
// Created by Steven F Daniel on 18/12/11.
// Copyright (c) 2012GenieSoft Studios All rights reserved.
to the standard ANSI C coding practices
Trang 33Understanding application delegates
The application delegate implements how your program should react at critical points during the application lifecycle The delegate is responsible for initializing a window at application startup and cleaning up at program termination This class is responsible for causing the main view controller to be displayed, as well as handling application responsiveness whenever your application suspends or resumes
Understanding the ViewController class
This file implements the views functionality and contains the class methods that correspond
to the view that is being loaded, as well as the method declarations that can be overridden
In the following table, we describe some of the methods that are contained within this class:
Method name Description
viewDidLoad This method is called whenever the view controller is
loaded, and is used to set up any additional objects.viewDidUnload This method is called whenever the view is unloaded
from memory
viewWillAppear This method is called whenever the view is ready
to appear on the devices' screen, or that it has fully appeared already
viewDidAppear This method is called whenever you want to perform
a particular action, once the view has fully appeared
on screen, such as performing some sort of transition animation or sound
shouldAutorotateTo
InterfaceOrientation This method is normally used whenever you
want your application to support multiple screen orientations, that is, landscape or portrait
Trang 34See also
f The Building the user interface for our application recipe
f The Creating outlets to Interface Builder objects recipe
f The Adding and customizing views recipe in Chapter 2, User Interfaces – Creating
so that they can programmatically interact with your code
Trang 35How to do it…
To display our view controller within Interface Builder and the Xcode environment, perform the following simple steps:
1 Select the ViewController.xib file from the project navigator window
2 From the Xcode toolbar, select the viewing options, as shown in the
Trang 36As you can see from the preceding screenshot, the Interface Builder workspace is divided into three main areas The following table provides a brief description of which area is used for what functions:
Area name Description
Navigation area This area displays all files associated with the project
Editor area This area is where we start to design our user interface from
Inspector pane This area is where we can configure each of our objects
Library pane This area is where we can locate objects and drag them
onto our view Such objects are the UILabel, UIButton, UITextField, and so on
There's more…
You may have noticed the section called Simulated Metrics located on the Attributes tab within the inspector pane window This area shows you how our interface will look like within the designer, and eventually how it will look like when it is deployed and run on the iOS device.Here you can specify whether your interface will have a status bar, toolbar, or even a
navigation bar It is worth mentioning that, if you set the Status Bar option to None, it does not mean that our application will start without a status bar
The status bar is the bar that appears at the top of the device's screen and displays certain types of information to the user, such
as the current time, battery status, carrier name, and so forth
See also
f The Building the user interface for our application recipe
f The Creating outlets to Interface Builder objects recipe
f The Adding and customizing views recipe in Chapter 2, User Interfaces – Creating
the UI
Trang 37Building the user interface for our
Creating the user interface for our application using Interface Builder is really easy, and can
be achieved by performing the following simple steps:
1 Select ViewController.xib from the project navigator window
2 From Object Library, drag a (Label) control to the view's canvas
3 Then, from the Attributes Inspector section, modify the Text property to
read Firstname:
4 Next, resize the Label control so that the contents of the label fit
5 Then, from Object Library, drag a (Textfield) control to the view and place it to the right-hand side of the Firstname label and resize the Textfield control so that it is wide enough to fit the field contents
6 From Object Library, drag a (Label) control to the view's canvas
7 From the Attributes Inspector section, modify the Text property to read Surname:
8 Next, resize the Label control so that the contents of the label fit
9 Then, from Object Library, drag a (Textfield) control to the view and place it to the right-hand side of the Surname label and resize the Textfield control so that it is wide enough to fit the field contents
10 From Object Library, drag a (Label) control to the view's canvas and place it a bit further down under the Surname label
11 From the Attributes Inspector section, modify the Text property to read Output:
12 Next, resize the Label control to about the width of the screen
13 Then, from Object Library, drag a (Button) control to the view and place it
underneath the Label control and centered
Trang 3814 Resize the Button control so that it is wide enough to fit the field contents.
15 From the Attributes Inspector section, modify the Title property to read Tap Here
16 After adding the button, save the document by selecting File | Save from the menu bar The main view should now look like the following screenshot:
How it works…
As you can see, using Interface Builder is not difficult once you get used to it Whenever you drag objects onto your view, you will notice that a small green circled cross appears on the cursor to indicate that it is safe to drop the object onto the view
From this view, we are also able to resize the control, as well as modify the attributes
associated with the control
See also
f The Building the user interface for our application recipe
f The Creating outlets to Interface Builder objects recipe
f The Creating actions that respond to user actions recipe
Trang 39Creating outlets to Interface Builder objects
In this recipe, we will take a closer look at outlets and how these can be used to communicate with our UI
1 Open the assistant editor by selecting Navigate | Open In Assistant Editor or
pressing option + command + ,.
2 Ensure that the ViewController.h interface file is displayed within the assistant editor window
3 Next, select the Firstname (Label) control, then hold down the command key
and drag it into the ViewController.h interface file, within the brackets and the @interface and @end lines
4 Choose Outlet from the Connection drop-down menu for the type of connection
to create
5 Enter lblFirstname for the name of the outlet property to create
6 Choose Strong from the Storage drop-down menu and click on the Connect button
7 Next, select the Firstname (Textfield) control, then hold down the command key,
and drag it into the ViewController.h interface file
8 Choose Outlet from the Connection drop-down menu for the type of connection
to create
9 Enter in txtFirstname for the name of the Outlet property to create
10 Choose Strong from the Storage drop-down menu and click on the Connect button
11 Repeat steps 3 to 9 to add the Surname, Label, and Tap Here button, while providing the names such as lblSurname, txtSurname, lblOutput, and btnTapHere for each
Trang 40Whenever you create an outlet, these will need to be created within the curly braces { } The Interface Builder designer does not create these for you automatically, so you will need
to add these before you create your outlets
12 Once you have created the necessary outlets, it would be good to save your project by
selecting File | Save, or alternatively pressing Command + S.
How it works…
Whenever we use outlets, these simply provide a means of allowing our Interface Builder objects to communicate with the code This is necessary and is the only way in which we can access the user interface objects that have been created within the Interface Builder designer environment
There's more…
There is another thing that we need to do when declaring outlets and that is to create the necessary properties for them Creating these properties provides us access to these controls, and automatically creates the getter and setter methods for our objects