• Tidak ada hasil yang ditemukan

Xcode 4 Cookbook free download ebook

N/A
N/A
Protected

Academic year: 2019

Membagikan "Xcode 4 Cookbook free download ebook"

Copied!
402
0
0

Teks penuh

(1)
(2)

Xcode 4 Cookbook

Over 100 recipes to build your own fun and exciting

iOS applications

Steven F. Daniel

(3)

Xcode 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

Production Reference: 1160513

Published by Packt Publishing Ltd. Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-84969-334-9

www.packtpub.com

(4)

Credits

Author

Steven F. Daniel

Reviewers

Bob Sander-Cederlof

Dave Hersey

Jean-Yves Mengant

Robert Wohnoutka

Acquisition Editor Mary Nadar

Lead Technical Editor Dayan Hyames

Project Coordinator Amey Sawant

Proofreader Amy Guest

Technical Editors Kaustubh Mayekar

Ankita Meshram

Veena Pagare

Akshata Patil

Zafeer Rais

Indexer

Monica Ajmera Mehta

Graphics Ronak Dhruv

Production Coordinator Manu Joseph

(5)

About 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.

(6)

Acknowledgement

No 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.

(7)

About 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).

(8)

Jean-Yves Mengant

is the CTO at SEFAS Innovation, a French software editor. He lives in France 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.

(9)

www.PacktPub.com

Support 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.

TM

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books.

Why Subscribe?

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

(10)

To 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.

(11)
(12)

Table of Contents

Preface 1

Chapter 1: Getting and Installing the iOS SDK Development Tools

7

Introduction 8

Downloading and installing the iOS SDK 9

Using Xcode to create an iOS project 14

Using Interface Builder to create the user interface 19

Building the user interface for our application 22

Creating outlets to Interface Builder objects 24

Creating actions that respond to user actions 28

Compiling your project 30

Using the iOS Simulator to test your applications 32

Configuring and using compiler directives 34

Debugging your iOS applications using Xcode 39

Using the Clang Static Analyzer to examine your code 41

Chapter 2: User Interfaces – Creating the UI

45

Introduction 45

Adding and customizing views 46

Using labels to display text 48

Obtaining user input through the use of buttons 51

Displaying an image within the view 53

Displaying and editing text 55

Using the iOS device keyboard 59

Displaying the progress to the user 61

Adding a toolbar to a view 66

Fading a view in and out 68

Creating a custom table view controller 71

Adding a table view to a view controller 72

(13)

Table of Contents

Chapter 3: Using Storyboards

79

Introduction 79

Configuring storyboards for a project 80

Creating a Twitter application 82

Creating storyboard scenes 84

Configuring storyboard scenes 87

Applying transitions to storyboards 92

Composing a tweet 94

Adding photos to a tweet 101

Preparing transition to another view controller 106

Presenting storyboard view controllers programmatically 109

Chapter 4: Using Xcode Instruments

113

Introduction 113

Introducing Xcode Instruments 114

Tracing iOS applications 119

Running and profiling an iOS project 120

Detecting virtual memory faults 125

Detecting memory leaks 127

Handling runtime errors 130

Handling compile-time errors 134

Adding and configuring Instruments 136

Chapter 5: Working with the Location Services and the

MapKit Frameworks

141

Introduction 141

Adding the CoreLocation and MapKit frameworks 142

Building a simple CoreLocation application 144

Determining the current GPS location 148

Adding and working with the MapView control 153

Adding overlay regions to maps 156

Adding annotation placeholders to the map 159

Reversing geocode address information 167

Working with the different map types 171

Chapter 6: Storing Documents within the Cloud

177

Introduction 177

Storing and using documents within iCloud 178

Working with the iCloud storage APIs 181

Detecting file version conflicts within iCloud 184

(14)

Table of Contents

Requesting entitlements for iCloud storage 199

Configuring iOS devices to use iCloud 204

Chapter 7: Working with Different Multimedia Resources

207

Introduction 207

Selecting images and video from the camera roll 208

Capturing media with the camera 211

Playing video with Apple TV integration 215

Playing music using the MediaPlayer framework 219

Using the iOS device's microphone to record 222

Animating views 226

Drawing customized text 229

Drawing lines and curves 232

Drawing and filling shapes 235

Applying color effects using Core Image 237

Applying transition effects 242

Chapter 8: Working with the CoreData and GameKit Frameworks

245

Introduction 246

Adding the GameKit and MessageUI frameworks 246

Building the Core Data data model 247

Creating the Core Data model files 249

Adding and configuring the Storyboard 252

Creating the Books Library user interface 254

Displaying data within the Table View 258

Inserting data within our Core Data data model 261

Delete an item from the Table View using Core Data 264

Reordering rows within a Table View 265

Filtering and searching for data within a Table View 268

Working with the different keyboard styles 271

Transferring data to another device using bluetooth 273

Implementing e-mail messaging 280

Chapter 9: Creating a Social Networking App with the

Facebook iOS SDK

285

Introduction 285

Downloading the Facebook iOS SDK 286

Registering your iOS applications with Facebook 288

Building a simple social networking application 292

Adding the Facebook SDK and dependencies to your project 295

(15)

Table of Contents

Implementing the View Controller class 304

Requesting additional Facebook permissions 308

Using the Graph API to read JSON data 311

Integrating with the Facebook social channels 315

Handling Facebook errors within your application 318

Chapter 10: Packaging and Deploying Your Application

323

Introduction 324

Setting up your iOS development team 324

Creating the iOS development certificate 329

Obtaining the development certificate from Apple 331

Registering your iOS devices for testing 335

Creating your application App IDs 337

Creating the development provisioning profiles 340

Using the provisioning profile to install the app on an iOS device 343 Preparing an application for submission to the App Store using

iTunes Connect 345

Archiving and submitting apps using Xcode 4 351

Appendix: Exploring the MultiTouch Interface

355

Introduction 355

Sensing the movement and device orientation 356

Using the shake gesture with the touch interface 358

Detecting device touches with the touch interface 362

Sensing movement with the accelerometer input 365

Working with the iOS device gyroscope 370

(16)

Preface

The 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.

(17)

What 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.

(18)

Chapter 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.

(19)

Who 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>

(20)

New 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

(21)

Errata

Although 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

(22)

1

Getting 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

(23)

Introduction

Welcome 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.

(24)

Downloading 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

(25)

How to do it...

To prepare your computer for iOS development, you will need to download and install the necessary components in the following order:

1. To sign up to the iOS Developer Program, you will need to go to

https://developer.apple.com/devcenter/ios/index.action

and 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

(26)

4. 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:

(27)

How 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.

(28)

This 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.

There's more…

The following list provides you with the links that contain the tools and information for installing them:

f Apple iOS Developer Portal: https://developer.apple.com/devcenter/ ios/index.action

f Apple Developer Tools information: https://developer.apple.com/ technologies/tools/whats-new.html

See also

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

(29)

Using 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.

(30)

4. 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.

(31)

Once 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.

(32)

The 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.

#import <UIKit/UIKit.h> #import "AppDelegate.h"

int main(int argc, char *argv[]) {

@autoreleasepool {

returnUIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }

}

There's more…

(33)

Understanding 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.

Understanding ViewController.xib

The XIB file may not be visible depending on whether you selected to use storyboards during the creation of your project. The XIB file is basically an XML file with a specific structure that is readable from Interface Builder, and contains various information about the user interface, such as the type of controls it contains, their properties, outlets, and so on.

Understanding HelloWorld-info.plist

(34)

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

Using Interface Builder to create the user

interface

In this recipe, we will familiarize ourselves with the Interface Builder application. Interface Builder is a visual tool that enables you to design the user interface for your iOS applications.

(35)

How 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 following screenshot:

In the preceding screenshot, this shows what Interface Builder looks like when an XIB file has been chosen from the project navigator window.

How it works…

(36)

As 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

(37)

Building the user interface for our

application

In this recipe, we will learn how to go about building our user interface and how to add controls.

Getting ready

Now that we have successfully created our project, we can start building our user interface using the Interface Builder designer.

How to do it…

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.

(38)

14. 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

(39)

Creating 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.

Getting ready

In our previous section, we looked at how to add controls to our ViewController to form the construction of our user interface as well as set some properties to our controls. In this section, we will look at how we can connect these up and access these controls within our code.

How to do it…

Creating outlets to Interface Builder objects is a simple process and can be achieved by performing the following simple steps:

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.

(40)

Whenever 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…

(41)

Creating properties to Interface Builder objects is a similar process to adding outlets, and can be achieved by performing the following simple steps:

1. Ensure that the ViewController.h interface file is displayed within the assistant editor window.

2. Next, select the Firstname (Label) control, then hold down the command key and drag it into the ViewController.h interface file at the end of the closing curly brace. 3. Choose Outlet from the Connection drop-down menu for the type of connection

to create.

4. Enter lblFirstname for the name of the outlet property to create.

5. Choose Strong from the Storage drop-down menu and click on the Connect button. 6. Next, select the Firstname (Textfield) control, then hold down the command key,

and drag it into the ViewController.h interface file.

7. Choose Outlet from the Connection drop-down menu for the type of connection to create.

8. Enter txtFirstname for the name of the outlet property to create.

9. Choose Strong from the Storage drop-down menu and click on the Connect button. 10. Repeat steps 3 to 9 to add the Surname, Label, and Tap Here button, while

(42)

Once you have created each of the property outlets, the completed ViewController.h interface file will resemble the following code snippet:

// ViewController.h // HelloWorld //

// Created by Steven F Daniel on 22/08/12.

// Copyright (c) 2012 GenieSoft Studios. All rights reserved.

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {

IBOutlet UILabel *lblFirstname; IBOutlet UITextField *txtFirstname; IBOutlet UILabel *lblSurname; IBOutlet UITextField *txtSurname; IBOutlet UILabel *lblOutput; IBOutlet UIButton *btnTapHere; }

@property (strong, nonatomic) IBOutlet UILabel *lblFirstname; @property (strong, nonatomic) IBOutlet UITextField *txtFirstname; @property (strong, nonatomic) IBOutlet UILabel *lblSurname; @property (strong, nonatomic) IBOutlet UITextField *txtSurname; @property (strong, nonatomic) IBOutlet UILabel *lblOutput; @property (strong, nonatomic) IBOutlet UIButton *btnTapHere;

@end

Since we created our outlets, you will notice that Interface Builder has also created each of our outlets and have declared these within our ViewController.m implementation file, as shown in the following code snippet:

// ViewController.m // HelloWorld //

// Created by Steven F Daniel on 22/08/12.

// Copyright (c) 2012 GenieSoft Studios. All rights reserved.

#import "ViewController.h"

@interface ViewController ()

@end

(43)

@synthesize lblFirstname; @synthesize txtFirstname; @synthesize lblSurname; @synthesize txtSurname; @synthesize lblOutput; @synthesize btnTapHere;

See also

f The Using Interface Builder to create the user interface recipe f The Building the user interface for our application recipe f The Creating actions that respond to user actions recipe

Creating actions that respond to user actions

In this recipe, we will take a closer look at actions and how these can be used to respond to user actions.

Getting ready

In our previous section, we looked at how to add controls to our ViewController to construct our user interface and connect up each of the outlets, as well as create properties for each of our controls. In this section, we will look at how we can communicate with these outlets and display a message to the user when the Tap Here button is clicked.

How to do it…

Adding actions to interface objects is a process similar to adding outlets, and can be achieved by performing the following simple steps:

1. Open the assistant editor by selecting Navigate | Open In Assistant Editor or by pressing option + command + ,.

2. Ensure that the ViewController.h interface file is displayed within the assistant editor window.

3. Next, select the Tap Here (Button) control, then hold down the command key, and drag it into the ViewController.h interface file.

4. Choose Action from the Connection drop-down menu for the type of connection to create.

(44)

How it works…

Whenever actions are created in Objective-C, they are responsible for responding and executing the associated code behind it. Instead of us hooking up an event handler to the TouchUpInside event of the button, we have decided to add an action to it and handle the output of this ourselves. These types of actions are called instance methods.

There's more…

Our next step is to add the code into our btnTapHere event method, which will display a greeting message to the user when this button is clicked. Perform the following steps to do so:

1. Open the ViewController.m implementation file from the project navigator.

2. Next, locate the btnTapHere event method and enter the following code snippet:

- (IBAction)btnTapHere:(id)sender {

NSString *greeting = [NSStringstringWithFormat:@"Welcome To Xcode 4 Cookbook series %@ %@",txtFirstname. text, txtSurname.text];

lblOutput.text = greeting;

lblOutput.font = [UIFont boldSystemFontOfSize:21]; lblOutput.textColor = [UIColorblueColor];

(45)

In our code snippet, we create an NSString object value called greeting, and then use the stringWithFormat method to concatenate our firstname and surname objects. Next, we assign this variable to our output label and then apply the font size and text color.

See also

f The Compiling your project recipe

f The Debugging your iOS applications using Xcode recipe

f The Using the iOS Simulator to test your applications recipe

Compiling your project

In this recipe, we will take a look at how we can compile our project with Xcode.

Getting ready

Xcode offers various options for compiling your application. In this section, we will take a look at these options.

How to do it…

Whenever you want to compile your application, you have the option of choosing to have your application run on the iOS device, or within each of the simulators for iPad or iPhone. The version number associated with the Simulators is dependent on the version of the iOS SDK you have installed on your computer. In Xcode 4, whenever you open an existing Xcode project or create a new one, Xcode will automatically create a default scheme for you.

(46)

Schemes are not new to Xcode 4 and they have existed since the early releases of Xcode 3. In previous releases of Xcode, you had to configure each of the items separately when setting an active target, a build configuration, or even an executable.

This posed many issues as all of these were linked to each other. This is where defining your own schemes comes in.

Schemes can be thought of as separate configurations, meaning that you can create a scheme to specify which targets to build, what configuration build to use, and what executable environment to use when the product specified by the target is launched (this could be if you wanted to target a specific iOS version, or if you wanted to have the application launch within the iOS Simulator). Perform the following steps:

1. To choose a scheme, you can just select it from the scheme pop-up menu, as shown in the preceding screenshot. HelloWorld is our default scheme that was created for us automatically when the project was created.

2. In order to create a new scheme, select the New Scheme… option. Alternatively, if you wanted to edit the active scheme you can choose the Edit Scheme… option. These options are also available under the Product menu.

Each scheme can be set to do a specific task. For instance, you may have a scheme to do a design build and one to handle the release or distribution. Various types of build options are available for building, testing, running, profiling (using instruments), and archiving your products, which can then be submitted to the App Store. There is no limit on the number of schemes that you can define. However, only one scheme can be active at one time.

3. Schemes can also be managed by selecting the Manage Schemes… option, or similarly from the Product menu.

(47)

The following screenshot shows how you can customize the active scheme. You can specify the type of build configuration to use, the type of debugger, and the current working directory to use. You can also choose to have your product run at a higher resolution, which enables you to simulate your application running at different display resolutions.

Using the iOS Simulator to test your

applications

In this recipe, we will take a look at how we can run our HelloWorld application using the iOS Simulator.

Getting ready

(48)

How to do it…

Next, build and run the application by selecting Product | Run from the Product menu, or alternatively by pressing command + R.

(49)

How it works…

The iOS Simulator is a fantastic tool that enables developers to test their applications without the need for an actual device. Whenever you use the iOS Simulator to build and run your application within the Xcode IDE, Xcode automatically installs your application within the iOS Simulator for you.

One of the other nice features of the iOS Simulator is that it has the capability of simulating different iOS versions, and this can be extremely useful if your application needs to be installed on different iOS platforms, as well as testing and debugging errors reported in your application when run under the different iOS versions.

It is worth mentioning that testing on the iOS Simulator is only good for a first round of testing, since it's not even running iOS code and it's more forgiving than the real device (for example filenames are case insensitive typically (Mac filesystem rules)), you can write files anywhere. Testing on a Simulator is never a substitute for testing on a device.

In the end, you're just running your application in a Mac OS X application running on an Intel processor. It's not even close to running under iOS on a device. It's useful for catching obvious errors or doing quick testing during development, but you still need to device test.

See also

f The Compiling your project recipe

f The Debugging your iOS applications using Xcode recipe

f The Registering your iOS devices for testing recipe in Chapter 10, Packaging and Deploying Your Application

f The Creating the development provisioning profiles recipe in Chapter 10, Packaging and Deploying Your Application

f The Using the provisioning profile to install the app on an iOS device recipe in Chapter 10, Packaging and Deploying Your Application

Configuring and using compiler directives

In C/C++, we use directives to include any other header files that our application will need to access. This is done by using the #include directive. In Objective-C, we use the #import directive. If you examine the contents of the ViewController.h file, you will notice that at the top of the file is a #import statement.

#import <UIKit/UIKit.h>

(50)

{

IBOutlet UILabel *lblFirstname; IBOutlet UITextField *txtFirstname; IBOutlet UILabel *lblSurname; IBOutlet UITextField *txtSurname; IBOutlet UILabel *lblOutput; IBOutlet UIButton *btnTapHere; }

The #import statement is known as a preprocessor directive. As mentioned previously, in C/ C++, you would use the #include preprocessor directive to include a file's content within the current source file. In Objective-C, you would use the #import directive statement to achieve the same result, with the exception that the compiler ensures that the file is only included once. To import a header file from one of the Xcode framework libraries, you would specify the header filename using the angle brackets (<>) within the #import statement.

If you wanted to import one of your own custom-built header files containing your own methods, you would specify and make use of the double-quoted marks (""), as you can see from the following sample code:

#import <UIKit/UIKit.h> #import "MyClass.h"

@interface ViewController : UIViewController { }

In this recipe, we will be taking a look at another approach where we can use directives to conditionally compile code based on a conditionally set pre-compiler flag that you can define yourself. This makes it easy for you to selectively enable parts of your application without making your code look messy.

Getting ready

(51)

How to do it...

Declaring compiler directives for your application is a very simple process, and can be achieved by performing the following simple steps:

1. Open the HelloWorld-Prefix.pch implementation file from the project navigator, located under the supporting files group.

2. Next, enter the following highlighted code snippet to this file: //

// Prefix header for all source files of the 'HelloWorld' target in the 'HelloWorld' project

//

#import <Availability.h>

#ifndef __IPHONE_4_0

#warning "This project uses features only available in iOS SDK 4.0 and later."

#endif

#ifdef __OBJC__

#import <UIKit/UIKit.h>

#import <Foundation/Foundation.h> #endif

#ifdef DISPLAY_FIRSTNAME

#warning "This application will display the value of the First namefield."

#else

#warning "This application will display the values of both the First name and Surname fields."

#endif

3. Next, we need to modify our btnTapHere method to be surrounded by an #ifdef statement, within our ViewController.m implementation file, as follows:

- (IBAction)btnTapHere:(id)sender { #ifdef DISPLAY_FIRSTNAME

NSLog(@"Using the Firstname field.");

NSString *greeting = [NSString stringWithFormat:@"Welcome to Xcode 4 Cookbook series %@",txtFirstname.text];

(52)

NSLog(@"Using Firstname and Surname fields.");

NSString *greeting = [NSString stringWithFormat:@"Welcome to Xcode 4 Cookbook series %@ %@",txtFirstname.text, txtSurname. text];

#endif

lblOutput.text = greeting;

lblOutput.font = [UIFont boldSystemFontOfSize:21]; lblOutput.textColor = [UIColorblueColor];

}

Whenever you want to display just the first name of the user, you simply set this to YES by defining the conditional flag.

How it works…

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.

This is particularly handy if you only want to force a set of NSLog messages or values to be used during testing, and not appear during the final release of your application. Some other uses where these types can be used would be, if you were creating a game and you wanted to disable some features in the trial or lite version of your game.

There's more…

In order to have your application use this compiler directive, we need to add this preprocessing flag to the Preprocessor Macros section, as follows:

1. Select the HelloWorld project from the project navigator window.

2. Next, select the HelloWorld project and then click on the Build Settings tab.

3. Then, scroll down to the Apple LLVM compiler 4.0 – Preprocessing section.

(53)

5. Dismiss this window by clicking outside within the project window.

That's all there is to it, easy. If you want to turn DISPLAY_FIRSTNAME off (for example, when you're ready to do your final release build), simply head back to this section and remove the flag from your project preferences.

6. Next, build and run the application by selecting Product | Run from the Product menu, or alternatively by pressing command + R and entering values for both Firstname and Surname. You should see a welcome message showing only your first name.

See also

f The Compiling your project recipe

f The Debugging your iOS applications using Xcode recipe

(54)

Debugging your iOS applications using

Xcode

In this recipe, we will show how easy it is to debug applications within Xcode and the iOS Simulator.

Getting ready

Xcode 4, provides you with a debugger for debugging your applications either using the iOS Simulator or on the actual iOS device. In this recipe, we will see how easy it is to debug applications to debug our HelloWorld application.

How to do it…

Debugging your application using the Xcode development environment is a simple process, and allows you to monitor changes to your application variables, as well as stepping through your source code line by line, and can be achieved by performing the following simple steps:

1. Open the ViewController.m implementation file from the project navigator.

2. Next, locate the btnTapHere event method and place a breakpoint within the gray gutter, as shown in the following screenshot.

3. You will notice that an arrow appears at the line you placed the marker at.

4. Next, build and run the application by selecting Product | Run from the Product menu, or alternatively by pressing command + R.

5. Populate the Firstname and Surname fields, and click on the Tap Here button.

(55)

7. Hover the mouse over the greeting variable in the breakpoint line to see the contents of the greeting label.

8. To continue execution of your application, click on the Continue program execution button.

How it works…

Although you can use the debugger to pause execution of your program at any time and view the state of your program variables, it is better to set the breakpoints before you run your application.

A breakpoint is basically an instruction that tells the application to stop when the breakpoint has been reached. During this phase, the execution of your code pauses and waits for further instructions as to what to do next. During this phase, you have the opportunity to either inspect the current values of any of the properties, or step through the code.

See Also

(56)

Using the Clang Static Analyzer to examine

your code

In this section, we will take a look at how we can use the Clang Static Analyzer tool to examine the syntax of our code for bugs.

Getting ready

There may be times when you want to examine the syntax of your code for bugs. This is where the Static Analyzer tool comes handy. This tool was first introduced back in Xcode 3.x, and opened and displayed the build results in a new window.

Xcode 4 allows you to perform the analysis of your code, examine the results, and apply the fixes to your source files all within the Xcode 4 workspace environment.

How to do it…

To run the Static Analyzer, perform the following simple steps:

1. Select the HelloWorld project from the project navigator window.

2. Open the ViewController.m implementation file.

3. Locate the btnTapHere method and enter the following modified code snippet: - (IBAction)btnTapHere:(id)sender {

UIColor *color; int colorIndex;

#ifdef DISPLAY_FIRSTNAME

NSLog(@"Using the Firstname field.");

NSString *greeting = [NSString stringWithFormat: @"Welcome to Xcode 4 Cookbook series %@",

txtFirstname.text]; #else

NSLog(@"Using Firstname and Surname fields."); NSString *greeting = [NSString stringWithFormat: @"Welcome to Xcode 4 Cookbook series %@ %@",

txtFirstname.text, txtSurname.text]; #endif

if (colorIndex == 1) {

(57)

else if (colorIndex == 2) {

lblOutput.textColor = [UIColor blueColor]; }

else if (colorIndex == 2) {

lblOutput.textColor = [UIColor purpleColor]; }

else {

lblOutput.textColor = [UIColor blueColor]; }

lblOutput.text = greeting;

lblOutput.font = [UIFont boldSystemFontOfSize:21]; }

4. Select Product | Analyze from the Product menu, or alternatively press down the Shift + command + B key combinations.

How it works…

(58)

Clicking on an issue within the left-hand pane will open the file in question, and display the problem that has been marked with a blue triangle. Clicking on this triangle will display the faulty flow of logic that has been identified and detected by the static analyzer, as can be seen in the preceding screenshot.

The static analyzer has flagged that the colorIndex variable has a potential error. This is due to the fact that the variable was not initialized upon declaration and contains some random value.

You will also notice that the analyzer provides additional detail when you click on the message bubbles, and displays the control flow, as can be seen by the arrows. This provides you with a full diagnosis of the bug. Many of the issues that are reported by the static analyzer tool have this information and make the analysis and fixing of these errors much easier.

If you would like to find out more information about the Static Analyzer, you can refer to the Apple developer documentation

located at http://developer.apple.com/library/

ios/#recipes/xcode_help-source_editor/ Analyze/Analyze.html.

See also

f The Compiling your project recipe

f The Debugging your iOS applications using Xcode recipe

f The Using the iOS Simulator to test your applications recipe

f The Registering your iOS devices for testing recipe in Chapter 10, Packaging and Deploying Your Application

f The Creating the development provisioning profiles recipe in Chapter 10, Packaging and Deploying Your Application

(59)
(60)

2

User Interfaces –

Creating the UI

In this chapter, we will cover:

f Adding and customizing views

f Using labels to display text

f Obtaining user input through the use of buttons

f Displaying an image within the view

f Displaying and editing text

f Using the iOS device keyboard

f Displaying the progress to the user

f Adding a toolbar object to a view

f Fading a view in and out

f Creating a custom table view controller

f Adding a table view to a view controller

f Handling different iOS devices

Introduction

(61)

The user interface consists of a canvas, and acts as a placeholder for your controls that the user can communicate with. In most real-world applications, views alone are simply not enough. Apple provides you with another class called UIViewController, which is responsible for managing views.

View controllers can respond to device notifications, such as determining when the device rotates, or can provide you with different ways of displaying and dismissing multiple views or even other view controllers.

We will also see how to use some of the most common view controllers to create our own custom classes. In this chapter, we will look at how we can add and customize views, as well as apply transitions to these to have them fade in and out. We will also take a look at some of the device specific aspects of the device, to determine its current orientation.

Adding and customizing views

In this recipe, we will look at how we can add a new UIView object to our existing view using Interface Builder and take a look at how we can customize this.

Getting ready

We will start by creating a new project using Xcode, and then use Interface Builder to help us add a new UIView object, so let's get started.

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. Select Create a new Xcode project, or click on File | New Project.

3. Select Single View Application from the list of available templates.

4. Click on the Next button to proceed to the next step in the wizard.

5. Next, enter ViewObjectsExample as the name for 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.

10. Click on the Next button to proceed to the next step in the wizard.

Gambar

table displays some of these file formats that it currently supports:

Referensi

Dokumen terkait

Tujuan dari Thesis ini adalah untuk meneliti tentang Perjanjian Pengikatan Jual Beli Satuan Rumah Susun sebagai dasar pembeli telah mendapatkan satuan rumah susun dan

Power management system (PMS) untuk pembangkit listrik di kapal, dalam hal ini kapal perang, merupakan suatu sistem yang memiliki fungsi controlling dan monitoring terhadap

Penelitian ini bertujuan untuk meningkatkan kemampuan pemahaman konsep matematis siswa kelas VIII F MTs Wathoniyah Islamiyah Kebarongan melalui pembelajaran Numbered

13 Orang tua menganjurkan anak mengikuti kegiatan yang berhubungan dengan budaya Cina.. 14 Orang tua mengajakan akkek lenteng untuk beribadah dan mengenal

Internet in addition to providing benefits for improving the welfare and advancement of human civilization, it can make the means to commit acts against the

Tabel 3.6 Matriks Fungsi Bisnis Vs Unit Organisasi PT Ragi Medalionh Sesawi 42 Tabel 3.7 Matriks Lokasi Vs Unit Organisasi PT Ragi Medalion Sesawi 43 Tabel 3.8 Matriks

Pada Gambar 1 menunjukkan bahwa hasil aktivitas antibakteri ekstrak metanol biji buah durian montong terhadap MRSA yang mampu membentuk zona hambat di sekitar

Lembar Kerja Siswa (Student Work Sheet) adalah panduan siswa yang digunakan untuk melakukan kegiatan penyelidikan atau pemecahan masalah (Trianto, 2007: