A collection of five iOS practice applications built with Objective-C in Xcode, following the exercises from the "Head First iPhone and iPad Development" book series. Each sub-project explores different UIKit components and iOS SDK features, progressing from basic view management to Core Data persistence and Twitter integration. Development discontinued on 2012-02-16.
A multi-view exploration app with six different UIViewController subclasses demonstrating:
- View switching with a
SwitchViewControllerthat manages transitions between views UIPickerViewwith data loaded from a plist file (DBPickerView.plist)- Action sheets with custom button images (normal and selected states)
- Multiple XIB files (View2 through View6), each with its own controller
- Image handling with landscape and portrait Apple logos
A minimal decision-making app with a single button that displays "Go for it!" when pressed. Demonstrates basic IBAction wiring and UILabel updates.
A full CRUD drink recipe manager featuring:
UITableViewwithUINavigationControllerfor master-detail navigation- Add, edit, and delete drinks with a modal
AddViewController - Plist-based persistence -- drinks are loaded from and saved to
DrinkDirections.plist - Edit mode with swipe-to-delete and an Edit button in the navigation bar
NSNotificationCenterobserver to save data on application termination- Constants file (
DrinkConstats.h) definingNAME_KEYandDIRECTION_KEY
A Twitter posting app combining:
- Two-component
UIPickerView-- activities ("sleeping", "eating", "working"...) and feelings ("awesome", "sad", "happy"...) UITextFieldfor custom notes- Twitter API integration via
NSMutableURLRequestwith HTTP POST to the Twitter status update XML endpoint - Keyboard dismissal via
DoneKeyBoard:action
The most advanced sub-project, implementing:
- Core Data persistence with a
Fugitivemanaged object entity NSFetchedResultsControllerfor efficient table view data sourcing with sort descriptors- Tab-based navigation with separate lists for fugitives and captured targets
- Detail views for viewing fugitive information (
FugitiveDetailViewController) - Camera integration for captured photo documentation (
CapturedPhotoViewController) - Cache-based fetching with named caches (
captured_list.cache)
- Objective-C (manual reference counting, no ARC)
- Xcode with Interface Builder (XIB files)
- UIKit --
UITableView,UIPickerView,UINavigationController,UIActionSheet,UIAlertView - Core Data --
NSManagedObjectContext,NSFetchedResultsController,NSEntityDescription - Foundation --
NSMutableArray,NSDictionary, plist serialization - iOS SDK 5.x (deployment target era)
hf-practices/
├── Hello World/
│ ├── Hello World.xcodeproj/
│ └── Hello World/
│ ├── AppDelegate.{h,m}
│ ├── SwitchView.{h,m} # Custom view
│ ├── SwitchViewController.{h,m} # Multi-view switcher
│ ├── ViewController{2..6}.{h,m} # Individual view controllers
│ ├── MainWindow.xib
│ ├── View{2..6}.xib # View XIBs
│ └── DBPickerView.plist # Picker data source
├── iDecide/
│ ├── iDecide.xcodeproj/
│ └── iDecide/
│ ├── AppDelegate.{h,m}
│ └── ViewController.{h,m} # Single-button decision maker
├── DrinkMixer/
│ ├── DrinkMixer.xcodeproj/
│ └── DrinkMixer/
│ ├── AppDelegate.{h,m}
│ ├── MasterViewController.{h,m} # Table view with drink list
│ ├── DetailViewController.{h,m} # Drink detail display
│ ├── AddViewController.{h,m} # Add/edit drink form
│ ├── DrinkConstats.h # Key constants
│ └── DrinkDirections.plist # Drink recipe data
├── InstaTwit/
│ ├── InstaTwit.xcodeproj/
│ └── InstaTwit/
│ ├── AppDelegate.{h,m}
│ └── ViewController.{h,m} # Picker + Twitter posting
├── iBountyHunter/
│ ├── iBountyHunter.xcodeproj/
│ └── iBountyHunter/
│ ├── AppDelegate.{h,m}
│ ├── Fugitive.{h,m} # Core Data entity
│ ├── FugitiveListViewController.{h,m} # Fugitive list with NSFetchedResultsController
│ ├── FugitiveDetailViewController.{h,m} # Fugitive detail view
│ ├── CapturedListViewController.{h,m} # Captured fugitives list
│ └── CapturedPhotoViewController.{h,m} # Camera photo capture
└── LICENSE
- Install Xcode (the projects were created with Xcode 4.x for iOS SDK 5.x)
- Open any sub-project's
.xcodeprojfile - Select an iOS Simulator target and build (Cmd+B) then run (Cmd+R)
Note: These projects use manual reference counting (MRC). Modern Xcode versions may require disabling ARC or adding
-fno-objc-arccompiler flags.
This project is no longer actively maintained. See CONTRIBUTING.md for historical build information.
This project is licensed under the terms specified in the LICENSE file.