About the Author |
|
xv | |
Acknowledgments |
|
xvii | |
Introduction |
|
xix | |
|
Part I Getting Acquainted |
|
|
1 | (158) |
|
Chapter 1 Welcome to Xcode |
|
|
3 | (10) |
|
|
3 | (1) |
|
|
3 | (1) |
|
|
4 | (1) |
|
Getting and Installing Xcode |
|
|
4 | (2) |
|
|
6 | (1) |
|
Apple's Resources for Developers |
|
|
7 | (1) |
|
|
8 | (1) |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
12 | (1) |
|
Chapter 2 Diving Right In |
|
|
13 | (24) |
|
Creating Your First Xcode Project |
|
|
14 | (5) |
|
|
19 | (1) |
|
|
20 | (4) |
|
|
24 | (3) |
|
Running and Testing Your Application |
|
|
27 | (1) |
|
|
28 | (3) |
|
Organizing Files in Xcode |
|
|
31 | (5) |
|
|
36 | (1) |
|
Chapter 3 Project Templates and Getting Around |
|
|
37 | (28) |
|
|
37 | (1) |
|
Master-Detail Applications |
|
|
38 | (1) |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
41 | (1) |
|
|
42 | (1) |
|
New for iOS 10 and Xcode 8 |
|
|
42 | (1) |
|
|
43 | (2) |
|
|
45 | (1) |
|
|
45 | (2) |
|
|
47 | (1) |
|
|
48 | (2) |
|
|
50 | (9) |
|
Configuring the Second View Controller |
|
|
59 | (4) |
|
|
63 | (1) |
|
|
64 | (1) |
|
Chapter 4 Building Interfaces |
|
|
65 | (38) |
|
|
66 | (3) |
|
Adding Tab Bar Icons to an Asset Catalog |
|
|
69 | (2) |
|
|
71 | (1) |
|
|
72 | (4) |
|
|
76 | (2) |
|
Tracking Location with the Track It Tab |
|
|
78 | (9) |
|
Mixing Colors with the Slide It Tab |
|
|
87 | (5) |
|
Adding "Off the Menu" Controls |
|
|
92 | (7) |
|
Changing the Interface with Code |
|
|
99 | (2) |
|
|
101 | (2) |
|
Chapter 5 Getting Help and Code Completion |
|
|
103 | (22) |
|
|
103 | (1) |
|
|
104 | (1) |
|
Downloading Additional Documentation |
|
|
104 | (1) |
|
|
105 | (2) |
|
|
107 | (6) |
|
|
113 | (1) |
|
|
114 | (3) |
|
Opening Web Sites in Safari |
|
|
117 | (1) |
|
Sending an E-Mail with MFMailComposeViewController |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
119 | (3) |
|
|
122 | (1) |
|
|
123 | (2) |
|
|
125 | (34) |
|
Understanding Auto Layout |
|
|
125 | (1) |
|
Building an Authentication View |
|
|
126 | (1) |
|
|
127 | (5) |
|
|
132 | (1) |
|
Manually Adding Constraints |
|
|
133 | (6) |
|
Automatically Adding Constraints |
|
|
139 | (4) |
|
|
143 | (1) |
|
|
144 | (7) |
|
|
151 | (1) |
|
|
151 | (7) |
|
|
158 | (1) |
|
|
159 | (178) |
|
|
161 | (40) |
|
A Brief History of Storyboards |
|
|
162 | (2) |
|
Creating a New Project Called SocialApp |
|
|
164 | (4) |
|
Creating View Controllers |
|
|
168 | (8) |
|
Pairing the View to the Controller |
|
|
176 | (2) |
|
Building Up the Storyboard |
|
|
178 | (3) |
|
Linking Scenes and Building Interfaces |
|
|
181 | (1) |
|
|
181 | (5) |
|
Adding a Navigation Controller |
|
|
186 | (2) |
|
Creating an Interface for the Feed View Controller |
|
|
188 | (5) |
|
Creating an Interface for Tweet View Controller |
|
|
193 | (3) |
|
Creating an Interface for the Compose View Controller |
|
|
196 | (3) |
|
|
199 | (2) |
|
Chapter 8 Table and Collection Views |
|
|
201 | (56) |
|
|
201 | (1) |
|
|
202 | (1) |
|
|
203 | (1) |
|
Configuring the Accounts View |
|
|
203 | (2) |
|
The Key Attributes of Table Views |
|
|
205 | (1) |
|
Manipulating Static Table Views |
|
|
206 | (3) |
|
The Accounts and Social Framework |
|
|
209 | (1) |
|
Retrieving and Displaying Twitter Accounts |
|
|
210 | (9) |
|
Configuring the Feed View |
|
|
219 | (15) |
|
Configuring the Tweet View |
|
|
234 | (2) |
|
Configuring the Compose View |
|
|
236 | (4) |
|
Discovering the Collection View |
|
|
240 | (1) |
|
Embedding a Tab Bar Controller |
|
|
240 | (2) |
|
Persisting User Preferences with UserDefaults |
|
|
242 | (4) |
|
Adding a Collection View Controller |
|
|
246 | (3) |
|
Configuring a Collection View |
|
|
249 | (2) |
|
Displaying Items in a Collection View |
|
|
251 | (5) |
|
|
256 | (1) |
|
Chapter 9 Frameworks, Libraries, and Targets |
|
|
257 | (24) |
|
|
257 | (1) |
|
|
258 | (15) |
|
Static Libraries, Frameworks, and Swift |
|
|
273 | (1) |
|
Working with Multiple Targets |
|
|
273 | (6) |
|
|
279 | (2) |
|
Chapter 10 Advanced Editing |
|
|
281 | (26) |
|
|
281 | (3) |
|
|
284 | (1) |
|
|
284 | (5) |
|
Organizing and Navigating Code |
|
|
289 | (4) |
|
|
293 | (4) |
|
|
297 | (3) |
|
|
300 | (6) |
|
|
306 | (1) |
|
Chapter 11 Debugging and Analysis |
|
|
307 | (30) |
|
|
308 | (5) |
|
Using Breakpoints to Resolve Logical Errors |
|
|
313 | (1) |
|
|
314 | (1) |
|
|
315 | (1) |
|
|
316 | (1) |
|
|
317 | (4) |
|
|
321 | (1) |
|
Using Exception Breakpoints |
|
|
322 | (2) |
|
|
324 | (1) |
|
|
325 | (1) |
|
Tools to Help with Debugging |
|
|
326 | (2) |
|
|
328 | (1) |
|
Print Debugging with the Printer Simulator |
|
|
329 | (3) |
|
|
332 | (3) |
|
|
335 | (2) |
|
Part III Final Preparations and Releasing |
|
|
337 | (118) |
|
Chapter 12 Version Control with Git |
|
|
339 | (30) |
|
|
339 | (1) |
|
|
339 | (1) |
|
|
340 | (3) |
|
The AVFoundation Framework |
|
|
343 | (1) |
|
|
344 | (7) |
|
|
351 | (2) |
|
Examining Changes with the Version Editor |
|
|
353 | (3) |
|
Branching in a Repository |
|
|
356 | (2) |
|
|
358 | (3) |
|
|
361 | (1) |
|
Using a Remote Repository |
|
|
362 | (1) |
|
Registering for GitHub and Creating a Repository |
|
|
362 | (2) |
|
Adding a GitHub Repository to Xcode |
|
|
364 | (2) |
|
Pushing to a Remote Repository |
|
|
366 | (1) |
|
Updating the Remote Repository |
|
|
367 | (1) |
|
|
368 | (1) |
|
|
369 | (36) |
|
Creating the SayMyName Application |
|
|
370 | (2) |
|
|
372 | (1) |
|
Creating the Application Interface |
|
|
373 | (1) |
|
|
373 | (3) |
|
|
376 | (4) |
|
Writing the Code for the SayMyName Application |
|
|
380 | (1) |
|
|
380 | (4) |
|
Converting Text to Speech |
|
|
384 | (3) |
|
Localizing the Application |
|
|
387 | (1) |
|
|
387 | (2) |
|
|
389 | (1) |
|
Storyboards and Localization |
|
|
390 | (2) |
|
|
392 | (3) |
|
Localizing Code with Localizable.strings |
|
|
395 | (3) |
|
|
398 | (1) |
|
Testing Localization with Xcode 8 |
|
|
399 | (3) |
|
Setting the Application Language in the Scheme |
|
|
402 | (2) |
|
|
404 | (1) |
|
Chapter 14 Devices and the Organizer |
|
|
405 | (18) |
|
The Role of the Organizer in Xcode 8 |
|
|
405 | (1) |
|
Preparing Xcode for Deploying to a Device |
|
|
406 | (1) |
|
Enrolling in the Apple Developer Program |
|
|
406 | (5) |
|
Adding Your Developer Account to Xcode |
|
|
411 | (3) |
|
Preparing a Device for Deployment |
|
|
414 | (2) |
|
Managing Devices in Xcode |
|
|
416 | (2) |
|
Capturing a Screenshot from a Running Application |
|
|
418 | (1) |
|
|
418 | (1) |
|
Archiving Your Application |
|
|
419 | (3) |
|
|
422 | (1) |
|
Chapter 15 Building, Sharing, and Distributing Applications |
|
|
423 | (32) |
|
Final Checks Before Publishing Your Application |
|
|
423 | (3) |
|
|
426 | (3) |
|
Discovering iTunes Connect |
|
|
429 | (4) |
|
|
433 | (2) |
|
Creating an Application Profile |
|
|
435 | (6) |
|
Uploading an Application to iTunes Connect |
|
|
441 | (1) |
|
Creating a Distribution Certificate and Profile |
|
|
442 | (1) |
|
Validating Your Application |
|
|
443 | (1) |
|
Submitting Your Application to the App Store |
|
|
444 | (1) |
|
Submitting Applications Using the Archives Organizer |
|
|
444 | (1) |
|
Submitting Applications Using the Application Loader |
|
|
445 | (1) |
|
|
445 | (1) |
|
|
446 | (3) |
|
Submitting an Application for Approval |
|
|
449 | (2) |
|
Using the iTunes Connect App |
|
|
451 | (2) |
|
|
453 | (1) |
|
|
454 | (1) |
Index |
|
455 | |