Preface 1. Why Go Native? The Pros and Cons Why Write Native Applications? The Release Cycle Build It and They Will Come
2. Becoming a Developer Registering As an iPhone Developer Enrolling in the iPhone Developer Program The Apple Developer Connection Installing the iPhone SDK Preparing Your iPhone or iPod touch Creating a Development Certificate Getting the UDID of Your Development Device Creating an App ID Creating a Mobile Provisioning Profile Making Your Device Available for Development
3. Your First iPhone App Objective-C Basics Object-Oriented Programming The Objective-C Object Model The Basics of Objective-C Syntax Creating a Project Exploring the Project in Xcode Our Project in Interface Builder Adding Code Connecting the Outlets in Interface Builder Putting the Application on Your iPhone
4. Coding in Objective-C Declaring and Defining Classes Declaring a Class with the interface Defining a Class with the Implementation Object Typing Properties Synthesizing Properties The Dot Syntax Declaring Methods Calling Methods Calling Methods on nil Memory Management Creating Objects The Autorelease Pool The alloc, retain, copy, and release Cycle The dealloc Method Responding to Memory Warnings Fundamental iPhone Design Patterns The Model-View-Controller Pattern Views and View Controllers The Delegates and Data Source Pattern Conclusion
5. Table-View-Based Applications Simplifying the Template Classes Creating a Table View Organizing and Navigating Your Source Code Connecting the Outlets Building a Model Adding Images to Your Projects Connecting the Controller to the Model Mocking Up Functionality with Alert Windows Adding Navigation Controls to the Application Adding a City View Edit Mode Deleting a City Entry Adding a City Entry The “Add New City...” Interface Capturing the City Data
6. Other View Controllers Utility Applications Making the Battery Monitoring Application Tab Bar Applications Refactoring the Template Adding Another Tab Bar Item Finishing Up Modal View Controllers Modifying the City Guide Application The Image Picker View Controller Adding the Image Picker to the City Guide Application
7. Connecting to the Network Detecting Network Status Apple's Reachability Class Embedding a Web Browser in Your App A Simple Web View Controller Displaying Static HTML Files Getting Data Out of a UI Web View Sending Email Getting Data from the Internet Synchronous Requests Asynchronous Requests Using Web Services
8. Handling Data Data Entry UI Text Field and Its Delegate UI Text View and Its Delegate Parsing XML Parsing XML with libxml2 Parsing XML with NSXML Parser Parsing JSON The Twitter Search Service The Twitter Trends Application Regular Expressions Introduction to Regular Expressions Storing Data Using Flat Files Storing Information in an SQL Database Core Data
9. Distributing Your Application Adding Missing Features Adding an Icon Adding a Launch Image Changing the Display Name Enabling Rotation Building and Signing Ad Hoc Distribution Developer-to-Developer Distribution App Store Distribution Submitting to the App Store The App Store Resource Center Reasons for Rejection
10. Using Sensors Hardware Support Determining Available Hardware Support Setting Required Hardware Capabilities Using the Camera The Core Location Framework Location-Dependent Weather Using the Accelerometer Writing an Accelerometer Application Using the Digital Compass Accessing the Proximity Sensor Using Vibration
11. Geolocation and Mapping User Location Annotating Maps
12. integrating Your Application Application Preferences Accessing Global Preferences Custom URL Schemes Using Custom Schemes Registering Custom Schemes Media Playback Using the Address Book Interactive People Picking Programmatic People Picking
13. Other Native Platforms Phone Gap Download and Installation Building a Phone Gap Project Mono Touch Download and Installation Building a Mono Touch Project
14. Going Further Cocoa and Objective-C The iPhone SDK Web Applications Core Data Push Notifications In-App Purchase Core Animation Game Kit Writing Games Look and Feel Hardware Accessories Index
摘要
I added a custom PNG icon for the Refresh button to the project, setting the UIButton type to Custom and the image to point at my refresh icon (you will need to drag your icon into your Xcode project before it will be available as a custom image). I resized the Refresh button to be the same size as the Info button provided by the template, setting the View Mode to "Scale to Fill" in the Attributes tab of the Inspector window. When connecting the UIButtons to the received actions——for example, when dragging the refresh View: action to the Refresh button——choose Touch Up Inside from the drop-down menu of events that Interface Builder will present to you when you make the connection. With this number of UI elements to play with, it's going to be easy to get confused. What's more, we are not going to connect all of the labels to our code, as some of them aren't going to be updated (e.g., section headers and the “Temp:”, “Humidity:”, and “Wind:” labels). So, for the elements you will connect to an IB0utlet, use the Identity Inspector's Interface Builder Identity section to change the Name attribute of the element to be the same as the variable in the Main View Controller interface file. Figure 7-11 shows the assignments. While this doesn't make it easier to connect the outlets to the UI elements, it does make it easier to check whether we've made an incorrect connection. If you click on File's Owner and switch to the Connections tab of the Inspector window, as Figure 7-12 shows, you can quickly check that each outlet is connected to the correct UI element since the name on each side of the connection should be the same. Although we've written the interface for the view controller and built and connected our view to the interface, we haven't implemented it yet. Let's hold off on that until we've built our data model. ……