Table of Contents |
| Introduction | xix |
ch. 1 | Building a Real-World Ios App: Bands | 1 |
| Introducing Bands | 2 |
| Getting Started | 3 |
| Scoping the App | 4 |
| Defining the Features | 5 |
| Creating a Development Plan | 6 |
| Summary | 6 |
ch. 2 | Introduction to Objective-C | 9 |
| Exploring the History of Objective-C | 9 |
| Explaining the Basics | 10 |
| Learning About Objects and Classes | 12 |
| Instantiating Objects | 16 |
| Managing Memory | 22 |
| Introducing Automatic Reference Counting | 26 |
| Adding Properties to a Class | 27 |
| Explaining Strings | 32 |
| Using Basic Data Structures | 35 |
| Discussing Advanced Concepts | 39 |
| Explaining the Model-View-Controller Design Pattern | 39 |
| Learning About Protocols and Delegates | 41 |
| Using Blocks | 44 |
| Handling Errors | 44 |
| Summary | 47 |
ch. 3 | Starting a New App | 51 |
| Creating a New App in Xcode | 51 |
| Discussing Xcode Templates | 54 |
| Learning About Bundle Identifiers | 54 |
| Exploring the Xcode Project Layout | 55 |
| Discussing the UIKit Framework | 56 |
| Discussing the Main Storyboard | 56 |
| Adding a Label to a Storyboard | 56 |
| Exploring Interface Builder | 57 |
| Setting Attributes | 58 |
| Exploring the Inspectors | 59 |
| Aligning UI Objects | 59 |
| Running in the Simulator | 59 |
| Choosing a Device | 60 |
| Learning to Test on All Device Sizes | 61 |
| Learning About Auto Layout | 62 |
| Discussing Auto Layout Basics | 64 |
| Testing Rotation | 64 |
| Exploring Application Settings | 66 |
| Setting Version and Build Numbers | 66 |
| Setting Supported Rotation Orientations | 67 |
| Setting the App Icon | 68 |
| Setting Launch Images | 70 |
| Running on a Device | 71 |
| Summary | 72 |
ch. 4 | Creating a User Input Form | 75 |
| Introducing the Band Model Object | 75 |
| Creating the Band Model Object | 76 |
| Creating Enumerations | 77 |
| Adding Properties to the Band Model Object | 78 |
| Building an Interactive User Interface | 79 |
| Learning About IBOutlet | 79 |
| Using UITextField and UITextFieldDelegate | 81 |
| Using UITextView and UITextViewDelegate | 84 |
| Using UIButton and IBAction | 85 |
| Using UIStepper | 87 |
| Using UISegmentedControl | 89 |
| Using UISwitch | 90 |
| Saving and Retrieving Data | 91 |
| Implementing the NSCoding Protocol | 91 |
| Saving Data | 93 |
| Retrieving Saved Data | 95 |
| Deleting Saved Data | 97 |
| Summary | 100 |
ch. 5 | Using Table Views | 103 |
| Exploring Table Views | 104 |
| Learning About Tables | 104 |
| Learning About Cells | 107 |
| Implementing the Bands Data Source | 110 |
| Creating the Band Storage | 110 |
| Adding Bands | 113 |
| Displaying Bands | 119 |
| Implementing Sections and Index | 121 |
| Adding Section Headers | 122 |
| Showing the Section Index | 122 |
| Editing Table Data | 123 |
| Enabling Edit Mode | 124 |
| Deleting Cells and Data | 125 |
| Modifying Data | 126 |
| Summary | 130 |
ch. 6 | Integrating The Camera and Photo Library in Ios Apps | 133 |
| Adding an Image View and Gesture Recognizer | 134 |
| Enabling User Interactions with a UllmageView | 134 |
| Learning About Gesture Recognizers | 136 |
| Selecting a Picture from the Photo Library | 139 |
| Learning About UllmagePickerController | 140 |
| Determining Device Capabilities | 140 |
| Allowing Picture Editing | 141 |
| Saving Band Images | 143 |
| Deleting Band Images | 145 |
| Taking a Picture with the Camera | 147 |
| Summary | 150 |
ch. 7 | Integrating Social Media | 153 |
| Sending E-mails and Text Messages | 154 |
| Using the E-mail Composer | 154 |
| Using the Message Composer | 160 |
| Simplifying Social Network Integration | 163 |
| Introducing the Activity View Controller | 164 |
| Learning About Twitter Integration | 167 |
| Learning About Facebook Integration | 168 |
| Learning About Flickr Integration | 169 |
| Limiting Sharing Options | 170 |
| Summary | 172 |
ch. 8 | Using Web Views | 175 |
| Learning About Web Views | 175 |
| Loading a URL | 180 |
| Loading a URL That Contains Special Characters | 182 |
| Showing User Feedback | 183 |
| Adding Navigation | 186 |
| Creating a Toolbar | 186 |
| Opening Safari | 191 |
| Summary | 193 |
ch. 9 | Exploring Maps and Local Search | 195 |
| Learning About Map Views | 196 |
| Getting the User's Location | 198 |
| Changing the Map Type | 201 |
| Performing a Local Search | 203 |
| Animating Annotations | 209 |
| Interacting with Annotations | 211 |
| Summary | 215 |
ch. 10 | Getting Started With Web Services | 219 |
| Learning About Web Services | 220 |
| Exploring the iTunes Search API | 220 |
| Discussing JSON | 221 |
| Adding the Search View | 223 |
| Introducing NSURLSession | 227 |
| Creating and Scheduling a Data Task | 227 |
| Parsing JSON | 231 |
| Displaying Search Results | 233 |
| Previewing Tracks | 236 |
| Showing Tracks in iTunes | 239 |
| Summary | 240 |
ch. 11 | Creating a Universal App | 243 |
| Transitioning to a Universal App | 244 |
| Supporting Rotation Using Auto Layout | 249 |
| Learning About Popovers | 250 |
| Presenting Action Sheets in Popovers | 250 |
| Using the UIPopoverController | 252 |
| Finishing the iPad Implementation | 258 |
| Summary | 265 |
ch. 12 | Deploying Your IOS App | 267 |
| Deploying the App to Beta Testers | 268 |
| Registering Beta Devices | 269 |
| Generating Digital Certificates | 271 |
| Creating an App ID and Ad Hoc Provisioning Profile | 274 |
| Signing and Deploying an Ad Hoc Build | 276 |
| Submitting the App to Apple | 280 |
| Exploring iTunes Connect | 280 |
| Creating an App Store Provisioning Profile | 283 |
| Validating and Submitting an App | 284 |
| Summary | 285 |
| Appendix: Answers to Exercises | 287 |
| Index | 293 |