Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Title Page
Acknowledgments
Table of Contents
Introduction
Prerequisites
What Has Changed in the Seventh Edition?
Our Teaching Philosophy
How to Use This Book
Using an eBook
How This Book Is Organized
Style Choices
Typographical conventions
Necessary Hardware and Software
1. A Simple iOS Application
Creating an Xcode Project
Model-View-Controller
Designing Quiz
Interface Builder
Building the Interface
Creating view objects
Configuring view objects
Running on the simulator
A brief introduction to Auto Layout
Making connections
Declaring outlets
Setting outlets
Defining action methods
Setting targets and actions
Summary of connections
Creating the Model Layer
Implementing action methods
Loading the first question
Building the Finished Application
Application Icons
Launch Screen
For the More Curious: Running an Application on a Device
2. The Swift Language
Types in Swift
Using Standard Types
Inferring types
Specifying types
Number and Boolean types
Collection types
Literals and subscripting
Initializers
Properties
Instance methods
Optionals
Subscripting dictionaries
Loops and String Interpolation
Enumerations and the Switch Statement
Enumerations and raw values
Closures
Exploring Apple’s Swift Documentation
3. Views and the View Hierarchy
View Basics
The View Hierarchy
Creating a New Project
Views and Frames
Customizing the labels
The Auto Layout System
The alignment rectangle and layout attributes
Constraints
Adding constraints in Interface Builder
Intrinsic content size
Misplaced views
Adding more constraints
Challenges
Bronze Challenge: More Auto Layout Practice
Silver Challenge: Adding a Gradient Layer
Gold Challenge: Spacing Out the Labels
For the More Curious: Retina Display
4. View Controllers
The View of a View Controller
Setting the Initial View Controller
Tab Bar Controllers
Tab bar items
Loaded and Appearing Views
Refactoring in Xcode
Accessing subviews
Interacting with View Controllers and Their Views
Bronze Challenge: Another Tab
Silver Challenge: Different Background Colors
5. Programmatic Views
Creating a View Programmatically
Programmatic Constraints
Anchors
Activating constraints
Layout guides
Margins
Explicit constraints
Programmatic Controls
Bronze Challenge: Points of Interest
Silver Challenge: Rebuild the Conversion Interface
For the More Curious: NSAutoresizingMaskLayoutConstraint
6. Text Input and Delegation
Text Editing
Keyboard attributes
Responding to text field changes
Dismissing the keyboard
Implementing the Temperature Conversion
Number formatters
Delegation
Conforming to a protocol
Using a delegate
More on protocols
Bronze Challenge: Disallow Alphabetic Characters
Silver Challenge: Displaying the User’s Region
7. Internationalization and Localization
Internationalization
Formatters
Base internationalization
Preparing for localization
Localization
NSLocalizedString and strings tables
Bronze Challenge: Another Localization
For the More Curious: Bundle’s Role in Internationalization
For the More Curious: Importing and Exporting as XLIFF
8. Debugging
A Buggy Project
Debugging Basics
Interpreting console messages
Fixing the first bug
Caveman debugging
The Xcode Debugger: LLDB
Setting breakpoints
Stepping through code
The LLDB console
9. UITableView and UITableViewController
Beginning the LootLogger Application
UITableViewController
Subclassing UITableViewController
Creating the Item Class
Custom initializers
UITableView’s Data Source
Giving the controller access to the store
Implementing data source methods
UITableViewCells
Creating and retrieving UITableViewCells
Reusing UITableViewCells
Editing Table Views
Editing mode
Adding rows
Deleting rows
Moving rows
Design Patterns
Bronze Challenge: Sections
Silver Challenge: Constant Rows
Gold Challenge: Favorite Items
10. Subclassing UITableViewCell
Creating ItemCell
Exposing the Properties of ItemCell
Using ItemCell
Dynamic Cell Heights
Dynamic Type
Responding to user changes
Bronze Challenge: Cell Colors
Silver Challenge: Long Item Names
11. Stack Views
Using UIStackView
Implicit constraints
Content hugging priorities
Content compression resistance priorities
Stack view distribution
Nested stack views
Stack view spacing
Segues
Hooking Up the Content
Passing Data Around
Bronze Challenge: More Stack Views
12. Navigation Controllers
UINavigationController
Navigating with UINavigationController
Appearing and Disappearing Views
Dismissing the Keyboard
Event handling basics
Dismissing by pressing the Return key
Dismissing by tapping elsewhere
UINavigationBar
Adding buttons to the navigation bar
Bronze Challenge: Displaying a Number Pad
Silver Challenge: A Different Back Button Title
Gold Challenge: Pushing More View Controllers
13. Saving, Loading, and Scene States
Codable
Property Lists
Error Handling
Application Sandbox
Constructing a file URL
Scene States and Transitions
Persisting the Items
Notification center
Saving the Items
Loading the Items
Bronze Challenge: Throwing Errors
Gold Challenge: Support Multiple Windows
For the More Curious: Manually Conforming to Codable
For the More Curious: Scene State Transitions
For the More Curious: The Application Bundle
14. Presenting View Controllers
Adding a Camera Button
Alert Controllers
Presentation Styles
15. Camera
Displaying Images and UIImageView
Taking Pictures and UIImagePickerController
Creating a UIImagePickerController
Setting the image picker’s delegate
Presenting the image picker modally
Permissions
Saving the image
Creating ImageStore
Giving View Controllers Access to the Image Store
Creating and Using Keys
Persisting Images to Disk
Loading Images from the ImageStore
Bronze Challenge: Editing an Image
Silver Challenge: Removing an Image
For the More Curious: Navigating Implementation Files
// MARK:
16. Adaptive Interfaces
Size Classes
Modifying traits for a specific size class
Adapting to Dark Mode
Adding colors to the Asset Catalog
Using custom dynamic colors
Bronze Challenge: Stacked Text Field and Labels
17. Extensions and Container View Controllers
Starting Mandala
Creating the model types
Adding resources to the Asset Catalog
Extensions
Creating a custom container view controller
Creating the MoodSelectionViewController
Creating the MoodListViewController
Handling the embed segue
18. Custom Controls
Creating a Custom Control
Relaying actions
Using the Custom Control
Updating the Interface
Adding the Highlight View
Bronze Challenge: More Access Control
19. Controlling Animations
Property Animators
Basic animations
Timing functions
Spring animations
Animating Colors
Animating a Button
20. Web Services
Starting the Photorama Application
Building the URL
Formatting URLs and requests
URLComponents
Sending the Request
URLSession
Modeling the Photo
JSON Data
JSONDecoder and JSONEncoder
Parsing JSON data
Enumerations and Associated Values
Passing the Photos Around
Downloading and Displaying the Image Data
The Main Thread
Bronze Challenge: Printing the Response Information
Silver Challenge: Fetch Recent Photos from Flickr
For the More Curious: HTTP
21. Collection Views
Displaying the Grid
Collection View Data Source
Customizing the Layout
Creating a Custom UICollectionViewCell
Downloading the Image Data
Image caching
Navigating to a Photo
Bronze Challenge: Horizontal Scrolling
Silver Challenge: Updated Item Sizes
22. Core Data
Object Graphs
Entities
Modeling entities
NSManagedObject and subclasses
NSPersistentContainer
Updating Items
Inserting into the context
Saving changes
Updating the Data Source
Fetch requests and predicates
Silver Challenge: Photo View Count
For the More Curious: The Core Data Stack
NSManagedObjectModel
NSPersistentStoreCoordinator
NSManagedObjectContext
23. Core Data Relationships
Relationships
Adding Tags to the Interface
Background Tasks
Silver Challenge: Favorites
24. Accessibility
VoiceOver
Testing VoiceOver
Accessibility in Photorama
Bronze Challenge: VoiceOver Pronunciation
25. Afterword
What to Do Next
Shameless Plugs
Index
← Prev
Back
Next →
← Prev
Back
Next →