Group Group Group Group Group Group Group Group Group Group Shape Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group Group
Skip to Content
  • iii. Dedications
  • More
    • NewsletterNewsletter
    • ForumsForums
Sign In
Create a free account
  • Search
  • Notebook
  • Customise

UIKit Apprentice

Second Edition Swift 5.5, iOS 15, Xcode 13

Before You Begin

Section 0: 5 chapters
  • i. What You Need
  • ii. Book Source Code & Forums
  • iii. Dedications
  • iv. About the Team
  • v. Acknowledgments
    • Content Development

Getting Started

Section 1: 8 chapters
  • 1. Introduction
    • 1.1 About this book
    • 1.2 Who this book is for
    • 1.3 iOS 15 and later only
    • 1.4 What you need
    • 1.5 Xcode
    • 1.6 What’s ahead: an overview
  • 2. The One-Button App
    • 2.1 The Bull’s Eye game
    • 2.2 The one-button app
    • 2.3 UIKit
  • 3. Slider & Labels
    • 3.1 Portrait vs. landscape
    • 3.2 Understanding objects, data and methods
    • 3.3 Adding the other controls
  • 4. Outlets
    • 4.1 Improve the slider
    • 4.2 Generate the random number
    • 4.3 Adding rounds to the game
    • 4.4 Displaying the target value
  • 5. Rounds & Score
    • 5.1 Getting the difference
    • 5.2 Simplifying the algorithm
    • 5.3 What’s the score?
    • 5.4 Showing the total score
    • 5.5 Displaying the score
    • 5.6 One more round…
  • 6. Polish
    • 6.1 Tweaks
    • 6.2 The alert
    • 6.3 Start over
  • 7. The New Look
    • 7.1 Landscape orientation revisited
    • 7.2 Spice up the graphics
    • 7.3 The About screen
  • 8. The Final App
    • 8.1 Support different screen sizes
    • 8.2 Crossfade
    • 8.3 The icon
    • 8.4 Display name
    • 8.5 Run on device
    • 8.6 The end… or the beginning?

Checklists

Section 2: 12 chapters
  • 9. Table Views
    • 9.1 Table views and navigation controllers
    • 9.2 The Checklists app design
    • 9.3 Add a table view
    • 9.4 The table view delegates
  • 10. The Data Model
    • 10.1 Model-View-Controller
    • 10.2 The data model
    • 10.3 Clean up the code
  • 11. Navigation Controllers
    • 11.1 Navigation controller
    • 11.2 Delete rows
    • 11.3 The Add Item screen
  • 12. Add Item Screen
    • 12.1 Static table cells
    • 12.2 Read from the text field
    • 12.3 Polish it up
  • 13. Delegates & Protocols
    • 13.1 Add new ChecklistItems
  • 14. Edit Items
    • 14.1 Edit items
    • 14.2 Refactor the code
    • 14.3 One more thing
  • 15. Saving & Loading
    • 15.1 The need for data persistence
    • 15.2 The documents folder
    • 15.3 Save checklist items
    • 15.4 Load the file
    • 15.5 What next?
  • 16. Lists
    • 16.1 The All Lists view controller
    • 16.2 The All Lists UI
    • 16.3 View the checklists
    • 16.4 Manage checklists
    • 16.5 Are you still with me?
  • 17. Improved Data Model
    • 17.1 The new data model
    • 17.2 Fake it ‘til you make it
    • 17.3 Do saves differently
    • 17.4 Improve the data model
  • 18. User Defaults
    • 18.1 Remember the last open list
    • 18.2 Defensive programming
    • 18.3 The first-run experience
  • 19. UI Improvements
    • 19.1 Show counts
    • 19.2 Sort the lists
    • 19.3 Add icons
    • 19.4 Make the app look good
  • 20. Local Notifications
    • 20.1 Try it out
    • 20.2 Set a due date
    • 20.3 Due date UI
    • 20.4 Schedule local notifications
    • 20.5 That’s a wrap!

My Locations

Section 3: 11 chapters
  • 21. Swift Review
    • 21.1 Variables, constants and types
    • 21.2 Methods and functions
    • 21.3 Making decisions
    • 21.4 Loops
    • 21.5 Objects
    • 21.6 Protocols
  • 22. Get Location Data
    • 22.1 Get GPS coordinates
    • 22.2 Core Location
    • 22.3 Display coordinates
  • 23. Use Location Data
    • 23.1 Handle GPS errors
    • 23.2 Improve GPS results
    • 23.3 Reverse geocoding
    • 23.4 Testing on device
  • 24. Objects vs. Classes
    • 24.1 Classes
    • 24.2 Inheritance
    • 24.3 Overriding methods
    • 24.4 Casts
  • 25. The Tag Location Screen
    • 25.1 The screen
    • 25.2 The new view controller
    • 25.3 Make the cells
    • 25.4 Display location info
    • 25.5 The category picker
  • 26. Adding Polish
    • 26.1 Improve the user experience
    • 26.2 The HUD
    • 26.3 Handle the navigation
  • 27. Saving Locations
    • 27.1 Core Data overview
    • 27.2 Using Core Data
    • 27.3 The data store
    • 27.4 Pass the context
    • 27.5 Browse the data
    • 27.6 Save the locations
    • 27.7 Handle Core Data errors
  • 28. The Locations Tab
    • 28.1 The Locations tab
    • 28.2 Create a custom table view cell subclass
    • 28.3 Edit locations
    • 28.4 Use NSFetchedResultsController
    • 28.5 Delete locations
    • 28.6 Table view sections
  • 29. Maps
    • 29.1 Add a map view
    • 29.2 Make your own pins
  • 30. Image Picker
    • 30.1 Add an image picker
    • 30.2 Show the image
    • 30.3 UI improvements
    • 30.4 Save the image
    • 30.5 Edit the image
    • 30.6 Thumbnails
  • 31. Polishing the App
    • 31.1 Convert placemarks to strings
    • 31.2 Back to black
    • 31.3 The map screen
    • 31.4 UI updates to screens
    • 31.5 Polish the main screen
    • 31.6 Make some noise
    • 31.7 The icon and launch images
    • 31.8 The end

Store Search

Section 4: 13 chapters
  • 32. Search Bar
    • 32.1 Create the project
    • 32.2 Create the UI
    • 32.3 Do fake searches
    • 32.4 UI Improvements
    • 32.5 Create the data model
    • 32.6 No results found
  • 33. Custom Table Cells
    • 33.1 Custom table cells and nibs
    • 33.2 Change the look of the app
    • 33.3 Tag commits
    • 33.4 The debugger
  • 34. Networking
    • 34.1 Query the iTunes web service
    • 34.2 Send an HTTP(S) request
    • 34.3 Parse JSON
    • 34.4 Work with the JSON results
    • 34.5 Sort the search results
  • 35. Asynchronous Networking
    • 35.1 Extreme synchronous networking
    • 35.2 The activity indicator
    • 35.3 Make it asynchronous
  • 36. URLSession
    • 36.1 Branch it
    • 36.2 Put URLSession into action
    • 36.3 Cancel operations
    • 36.4 Search different categories
    • 36.5 Download the artwork
    • 36.6 Merge the branch
  • 37. The Detail Pop-up
    • 37.1 The new view controller
    • 37.2 Add the rest of the controls
    • 37.3 Show data in the pop-up
  • 38. Polish the Pop-up
    • 38.1 Dynamic Type
    • 38.2 Gradients in the background
    • 38.3 Animation!
  • 39. Landscape
    • 39.1 The landscape view controller
    • 39.2 Fix issues
    • 39.3 Add a scroll view
    • 39.4 Add result buttons
    • 39.5 Paging
    • 39.6 Download the artwork
  • 40. Refactoring
    • 40.1 Refactor the search
    • 40.2 Improve the categories
    • 40.3 Enums with associated values
    • 40.4 Spin me right round
    • 40.5 Nothing found
    • 40.6 The Detail pop-up
  • 41. Internationalization
    • 41.1 Add a new language
    • 41.2 Localize on-screen text
    • 41.3 InfoPlist.strings
    • 41.4 Regional settings
  • 42. The iPad
    • 42.1 Deployment platforms
    • 42.2 The split view controller
    • 42.3 Improve the secondary pane
    • 42.4 Fix the Detail pop-up for iPhone
    • 42.5 Size classes in the storyboard
    • 42.6 Your own popover
    • 42.7 Send e-mail from the app
    • 42.8 Landscape on bigger iPhones
  • 43. Distributing the App
    • 43.1 Join the Apple Developer program
    • 43.2 Beta testing
    • 43.3 Submit for review
    • 43.4 The end
  • 44. Conclusion
Home iOS & Swift Books UIKit Apprentice

iii
Dedications

“For my parents and my wife.”

— Fahim Farook

“To Floortje, my familiar. Thanks for all the cuddles!”

— Matthijs Hollemans

iv. About the Team ii. Book Source Code & Forums

Have a technical question? Want to report a bug? You can ask questions and report bugs to the book authors in our official book forum here.

© 2022 Razeware LLC