Professionalnoe programirovanie prilojeniy dlya iphone i ipad

Page 1


Оглавление

Об авторе ...........................................................................................17 О техническом редакторе....................................................................17 Благодарности ...................................................................................17 Введение ...............................................................................................................................19 Глава 1. Навигация ...........................................................................................................25 Стек переходов.............................................................................................................26 Навигационная панель..............................................................................................26 Протокол UINavigationBarDelegate ..............................................................26 Настройка навигационных панелей ..............................................................26 Добавление и удаление элементов ................................................................27 Простая навигационная панель .............................................................................27 Пошаговая разработка: простая навигационная панель ........................28 Тестируем приложение ......................................................................................43 Панель инструментов ................................................................................................43 Простая панель инструментов ...............................................................................44 Пошаговая разработка: простая панель инструментов ..........................45 Тестируем приложение ......................................................................................53 Панель вкладок ............................................................................................................53 Протокол UITabBarDelegate............................................................................53 Настройка и изменение панели вкладок .....................................................53 Простая панель вкладок ...........................................................................................54 Пошаговая разработка: простая панель вкладок ......................................55

5


Оглавление

Проектирование контроллеров представления ........................................58 Тестируем приложение ......................................................................................83 Резюме ............................................................................................................................83 Глава 2. Оповещения, списки действий и модальные представления..........84 Оповещения ..................................................................................................................84 Создание оповещения ........................................................................................85 Протокол UIAlertViewDelegate ......................................................................85 Пример простого оповещения для iPhone/iPod и iPad .................................85 Пошаговая разработка: загрузка файла в UITextView ...........................87 Тестируем приложение ......................................................................................99 Списки действий .........................................................................................................99 Проектирование списка действий .................................................................99 Протокол UIActionSheetDelegate ............................................................... 100 Список действий для iPhone/iPod Touch ........................................................ 100 Пошаговая разработка: создание списка действий для iPhone или iPod Touch ..................................................................... 101 Тестируем приложение ................................................................................... 114 Список действий для iPad..................................................................................... 114 Пошаговая разработка: создание списка действий для iPad ............. 116 Заключительные шаги: установление связей ......................................... 130 Тестируем приложение ................................................................................... 132 Модальные представления ................................................................................... 132 Отображение и закрытие модального представления ......................... 132 Стили перехода между представлениями ................................................ 132 Стили отображения модальных представлений (только для iPad) ...... 133 Модальное представление для iPhone и iPod Touch ................................... 133 Пошаговая разработка: создание модального представления для iPhone и iPod Touch .......................................................................... 134 Тестируем приложение ................................................................................... 144 Модальное представление для iPad................................................................... 145 Пошаговая разработка: создание модального представления для iPad .......................................................................................................... 145 Тестируем приложение ................................................................................... 158

6


Оглавление

Резюме ......................................................................................................................... 158 Глава 3. Нестандартные табличные представления ......................................... 159 Табличные представления .................................................................................... 159 Ячейка табличного представления ............................................................. 160 Протокол UITableViewDataSource ............................................................. 160 Протокол UITableViewDelegate .................................................................. 160 Приложение с нестандартным табличным представлением .................... 161 Пошаговая разработка: приложение с нестандартным табличным представлением ................................................................... 162 Создание файла со списком свойств Contacts.plist .............................. 175 Тестируем приложение ................................................................................... 177 Резюме ......................................................................................................................... 177 Глава 4. Разделенное представление ..................................................................... 178 Класс UISplitViewController ............................................................................... 178 Протокол UIPopoverControllerDelegate ................................................... 179 Протокол UISplitViewControllerDelegate................................................ 179 Простое приложение на основе разделенного представления................. 179 Пошаговая разработка: простое приложение на основе разделенного представления ................................................................. 181 Создание файла со списком свойств DataSource.plist ......................... 185 Тестируем приложение ................................................................................... 200 Резюме ......................................................................................................................... 200 Глава 5. События сенсорного экрана ..................................................................... 201 Обработка событий сенсорного экрана ............................................................ 201 Одиночное касание .......................................................................................... 203 Множественные касания................................................................................ 203 Нажатия ............................................................................................................... 203 Скольжение и жесты ....................................................................................... 204 Простой обработчик касаний .............................................................................. 205 Пошаговая разрабока: простой обрабочик касаний ............................. 205 Тестируем приложение ................................................................................... 218

7


Оглавление

Распознавание простых жестов .......................................................................... 218 Пошаговая разработка: распознавание простых жестов ..................... 219 Тестируем приложение ................................................................................... 244 Резюме ......................................................................................................................... 244 Глава 6. Механизм уведомлений .............................................................................. 245 Концепция уведомлений ....................................................................................... 246 Центр уведомлений .......................................................................................... 246 Регистрация для получения локальных уведомлений ........................ 247 Создание локальных уведомлений ............................................................. 247 Отмена регистрации слушателя .................................................................. 247 Локальное именованное уведомление.............................................................. 247 Пошаговая разработка: локальное именованное уведомление ........ 247 Тестируем приложение ................................................................................... 258 Локальные уведомления от клавиатуры ......................................................... 258 Пошаговая разработка: локальные уведомления от клавиатуры .... 259 Тестируем приложение ................................................................................... 275 Резюме ......................................................................................................................... 276 Глава 7. Работа с сетью ................................................................................................ 277 Обмен данными по сети......................................................................................... 278 Простой сетевой обозреватель ............................................................................ 280 Пошаговая разработка: простой сетевой обозреватель ....................... 281 Тестируем приложение ................................................................................... 298 Прямая связь между устройствами ................................................................... 298 Пошаговая разработка: прямая связь между устройствами .............. 299 Тестируем приложение ................................................................................... 320 Резюме ......................................................................................................................... 321 Глава 8. Мультимедиа ................................................................................................... 322 Фреймворки для аудио .......................................................................................... 322 Медиапроигрыватель ...................................................................................... 323

8


Оглавление

AV Foundation .................................................................................................... 323 Audio Toolbox...................................................................................................... 323 Audio Unit ............................................................................................................ 324 OpenAL ................................................................................................................. 324 Фреймворки для видео .......................................................................................... 324 MPMoviePlayerController .............................................................................. 325 Поддерживаемые форматы ........................................................................... 325 Воспроизведение аудио из библиотеки iPod ................................................. 325 Пошаговая разработка: проигрывание музыки из библиотеки iPod ................................................................................... 327 Тестируем приложение ................................................................................... 356 Приложение для проигрывания видео из библиотеки iPod ..................... 356 Пошаговая разработка: приложение для проигрывания видео из библиотеки iPod ................................................................................... 358 Тестируем приложение ................................................................................... 382 Резюме ......................................................................................................................... 382 Глава 9. Настройки приложения .............................................................................. 383 Конфигурация приложения ................................................................................. 383 Руководство по настройкам приложения ................................................ 384 Типы элементов для настроек ...................................................................... 384 Реализация иерархий настроек.................................................................... 385 Доступ к настройкам приложения.............................................................. 385 Запись простых настроек ...................................................................................... 385 Пошаговая разработка: запись простых настроек ................................. 387 Листинг исходного кода для приложения, записывающего простые настройки .................................................... 391 Создание иерархии дочерних панелей ............................................................. 397 Пошаговая разработка: создание иерархии дочерних панелей ........ 399 Тестируем приложение ................................................................................... 411 Резюме ......................................................................................................................... 411 Глава 10. Хранение данных ........................................................................................ 413

9


Оглавление

Список свойств ......................................................................................................... 413 Применение списков со свойствами .......................................................... 414 Рекомендуемые типы ...................................................................................... 414 Сохранение и восстановление списка свойств ....................................... 415 Core Data ..................................................................................................................... 415 Набор компонентов Core Data ..................................................................... 415 Управляемые объекты ..................................................................................... 416 Контекст управления объектами................................................................. 416 Модель управления объектами.................................................................... 416 Класс NSPersistentStoreCoordinator .......................................................... 416 Инструмент для моделирования данных в Xcode ................................. 417 Получение управляемых объектов ............................................................. 417 Удаление управляемых объектов ................................................................ 418 Общие требования к хранилищу данных ........................................................ 418 Пошаговая разработка: простое приложение, использующее списки свойств .............................................................. 420 Тестируем приложение ................................................................................... 446 Пошаговая разработка: простое приложение, использующее фреймворк Core Data ................................................. 446 Тестируем приложение ................................................................................... 478 Резюме ......................................................................................................................... 478 Глава 11. Буфер обмена ............................................................................................... 479 Концепция буфера обмена.................................................................................... 480 Именованные буферы обмена ...................................................................... 480 Постоянные буферы обмена ......................................................................... 481 Меню редактирования .................................................................................... 481 Вырезание выделенных элементов ............................................................. 482 Вставка элемента .............................................................................................. 482 Закрытие меню редактирования ................................................................. 483 Вырезание и вставка текста .................................................................................. 483 Пошаговая разработка: вырезание и вставка текста............................. 484 Тестируем приложение ................................................................................... 493 Вырезание и вставка изображений .................................................................... 494

10


Оглавление

Пошаговая разработка: вырезание и вставка изображений............... 495 Тестируем приложение ................................................................................... 505 Создание нестандартных меню для iPad ......................................................... 505 Пошаговая разработка: создание нестандартных меню для iPad..... 507 Тестируем приложение ................................................................................... 519 Резюме ......................................................................................................................... 519 Глава 12. Модульное тестирование ......................................................................... 520 Подготовка среды для тестирования ................................................................ 520 Использование целевого приложения для тестирования .................. 521 Простой модульный тест....................................................................................... 521 Пошаговая разработка: простой модульный тест.................................. 523 Создание файла Data.plist, содержащего данные .................................. 535 Тестируем приложение ................................................................................... 539 Пошаговое создание модульного теста: простой модульный тест ......... 540 Модульное тестирование приложения ..................................................... 545 Регистрируем устройство .............................................................................. 547 Модульное тестирование приложения ..................................................... 547 Резюме ......................................................................................................................... 548 Глава 13. Улучшение производительности и оптимизация ............................ 549 Профилирование ..................................................................................................... 550 Использование симулятора .......................................................................... 550 Использование устройства ............................................................................ 550 Польза от профилирования .......................................................................... 551 Простая проверка на наличие утечек памяти ................................................ 551 Пошаговая разработка: тестирование утечек памяти .......................... 556 Продолжаем пошаговую разработку: использование программы Instruments ............................................................................ 565 Продолжаем пошаговую разработку: использование пункта Build and Analyze в главном меню......................................... 565 Резюме ......................................................................................................................... 567 Глава 14. Интеграция с рекламной сетью iAd ..................................................... 568

11


Оглавление

Регистрация в сети iAd .......................................................................................... 568 Подготовка банковских реквизитов ........................................................... 569 Настройка приложений для соединения с сетью iAd .......................... 569 Настройка выводимой в iAd рекламы ....................................................... 569 Подготовка приложения к работе в сети iAd ................................................. 569 Реализация ADBannerView........................................................................... 569 Интеграция с фреймворком iAd .................................................................. 570 Простое приложение, использующее iAd........................................................ 570 Пошаговая разработка: простое приложение, использующее iAd... 572 Тестируем приложение ................................................................................... 581 Резюме ......................................................................................................................... 581 Глава 15. Многозадачность ........................................................................................ 582 Сервисы с поддержкой многозадачности ........................................................ 582 Сообщения делегата UIApplication ............................................................ 583 Требования к приложению, которое поддерживает многозадачность ......................................................................................... 584 Ограничения, которые симулятор накладывает на многозадачность ................................................................................... 585 Поддержка многозадачности в устройствах............................................ 585 Приложение, которое проигрывает аудио с применением многозадачности ............................................................................................... 585 Пошаговая разработка: аудиопроигрыватель с поддержкой многозадачности ........................................................................................ 587 Тестируем приложение ................................................................................... 608 Резюме ......................................................................................................................... 608 Приложение А. Первые шаги .................................................................................... 609 Конструктор проектов Xcode .............................................................................. 609 Типы доступных приложений ...................................................................... 610 Окно проекта ...................................................................................................... 611 Split View-based ................................................................................................. 613 Сборка и запуск приложения в симуляторе............................................ 615 Конструктор интерфейсов .................................................................................... 616

12


Оглавление

Создание документа для конструктора интерфейсов .......................... 617 Окно с документом........................................................................................... 617 Библиотека .......................................................................................................... 618 Окно инспектора ............................................................................................... 618 Панель со связями ............................................................................................ 619 Резюме ......................................................................................................................... 619 Приложение Б. Центр разработки для iPhone ................................................... 620 Ресурсы по iOS 4 SDK ........................................................................................... 620 Загружаемые ресурсы ..................................................................................... 621 Справочная библиотека по iOS 4 ................................................................ 621 Примеры кода .................................................................................................... 622 Программа для iPhone-разработчиков ............................................................. 623 Портал для подготовки iPhone-приложений (iPhone Provisioning Portal) ................................................................... 624 Форумы для разработчиков .......................................................................... 625 Центр поддержки разработчиков ................................................................ 625 iTunes Connect ........................................................................................................... 626 Новости и анонсы .................................................................................................... 627 Подписка на RSS-ленту .................................................................................. 627 Резюме ......................................................................................................................... 627 Приложение В. Статические библиотеки Cocoa Touch .................................. 628 Шаблон проекта для Xcode .................................................................................. 628 Выбор шаблона для статической библиотеки ........................................ 629 Добавление классов в библиотеку .............................................................. 629 Листинг исходного кода для статической библиотеки DataSource .................................................................................................... 630 Сборка проекта .................................................................................................. 634 Создание проекта приложения в Xcode ........................................................... 635 Создание нового приложения ...................................................................... 636 Добавление библиотеки в новый проект .................................................. 636 Добавление в проект заголовочных файлов библиотеки ................... 638 Разработка пользовательского интерфейса для приложения........... 638

13


Оглавление

Добавление исходного кода с использованием библиотечных классов ............................................................................. 644 Тестируем приложение ................................................................................... 652 Резюме ......................................................................................................................... 652 Приложение Г. Ресурсы для разработчиков от компании Apple ................ 653 Программа для iPhone-разработчиков ............................................................. 653 Центральные ресурсы для разработчиков ............................................... 653 Ресурсы по iOS .................................................................................................. 654 Ресурсы для разработчиков под iOS .......................................................... 654 Руководства для разработчиков под iOS.................................................. 654 iTunes App Store ........................................................................................................ 655 Подготовка приложения к дистрибуции ......................................................... 655 Руководство по работе с сервисом iTuned Connect...................................... 656 Алфавитный указатель ................................................................................................ 657


Глава 2 ОПОВЕЩЕНИЯ, СПИСКИ ДЕЙСТВИЙ И МОДАЛЬНЫЕ ПРЕДСТАВЛЕНИЯ

О чем эта глава • Роль всплывающих оповещений, их дизайн и принцип использования. • Назначение списков действий, их дизайн и принцип работы. • Дизайн и принцип использования модальных представлений, их роль

в предоставлении различной функциональности. Оповещения (alerts), модальные представления (modal views) и списки действий (action sheets) — это временные элементы, требующие от пользователя непосредственного внимания. Пока они не будут закрыты, приложение не сможет выполнять других действий. Оповещения уведомляют пользователя о каком-либо событии и, как правило, предлагают две кнопки на выбор: OK для подтверждения и Cancel для отмены. Списки действий обычно предподносятся пользователю в виде набора пунктов, среди которых могут быть OK и Cancel. Любое представление может стать модальным, если вывести его на экран соответствующим образом. В этом случае приложение не может выполнить ни одного действия, пока модальное представление не исчезнет. В качестве примера можно рассмотреть выбор композиции из списка для воспроизведения. Когда пользователь делает выбор, представление закрывается и композиция начинает проигрываться. Чтобы продемонстрировать принцип использования этих трех временных представлений, в данной главе мы рассмотрим пять полноценных программ: одну для оповещения, две для списка действий и еще две для модального отображения представлений. Разделы о списках действий и модальных представлениях содержат приложения и для iPhone, и для iPad, так как подходы к проектированию для этих устройств немного различаются.

Оповещения Роль оповещений в ваших приложениях очевидна. Они нужны для информирования пользователя о чем-то важном, что препятствует обычному варианту выполнения программы. Существуют две распространенные ситуации, в которых применяются оповещения: 84


Оповещения, списки действий и модальные представления

• уведомление о текущей проблеме и предложение пользователю ва-

риантов ее решения; • при возникновении потенциальной проблемы предоставление поль-

зователю выбора — принять или отклонить результат.

Создание оповещения При использовании оповещения вы должны определить для него количество кнопок, но сами кнопки не могут быть изменены. Важно, чтобы оповещения были простыми и понятными; пользователю нужно предлагать только два варианта, но необходимо тщательно продумывать, какой из них будет выбран по умолчанию. В руководстве по проектированию пользовательского интерфейса от компании Apple (User Interface Guidelines) для выбора по умолчанию рекомендуется применять кнопку, которая находится справа (она также должна быть подсвеченной). Левая кнопка всегда должна быть затемненной, а правая — никогда. Вам могут пригодиться следующие советы: • для критически важных действий кнопка отмены должна находиться

справа и быть подсвеченной; • для менее важных действий кнопка отмены должна находиться слева

и быть затемненной; • если оповещение содержит всего одну кнопку, то она должна быть

подсвечена. Еще один момент, на который следует обратить внимание, — это стиль формулировок в вашем сообщении. Текст с описанием причины оповещения не должен содержать слова ошибка, потому что это и так подразумевается.

Протокол UIAlertViewDelegate Протокол UIAlertViewDelegate определяет методы, которые должен реализовывать делегат объекта UIAlertView. Если вы добавляете в оповещение собственные кнопки, то делегат должен реализовывать сообщение alertView: clickedButtonAtIndex:, чтобы реагировать на нажатия. В противном случае кнопки ничего не будут делать. После выполнения этого метода оповещение будет закрыто.

Пример простого оповещения для iPhone/iPod и iPad В этом приложении вы будете загружать содержимое файла в элемент UITextView, основываясь на выборе, который пользователь делает с помощью оповещения. Оповещения ведут себя одинаково на iPhone, iPod и iPad. 85


Глава 2

Программа будет предоставлять пользователю два варианта, как показано на рис. 2.1: • Found — открыть файл, который существует; • Not Found — открыть файл, которого не существует.

Если пользователь выберет пункт Found и нажмет кнопку Run, он получит оповещение с вопросом о продолжении или отмене открытия файла. Если пользователь захочет открыть файл, то содержимое загрузится в элемент UITextView, как показано на рис. 2.2.

Рис. 2.2.

Рис. 2.1

Рис. 2.3

86


Оповещения, списки действий и модальные представления

Если пользователь выберет пункт Not Found, то при нажатии кнопки Run появится оповещение, уведомляющее о том, что файл не найден, и предлагающее всего один вариант — вернуться в приложение (рис. 2.3). В программе также будет кнопка Clear для очистки содержимого UITextView.

Пошаговая разработка: загрузка файла в UITextView Для создания оповещения выполните следующие действия. 1. Запустите Xcode, создайте приложение, основанное на представлении, и назовите его Alert. Если на этом этапе вам требуется помощь, ознакомьтесь с соответствующим разделом Приложения А. 2. Дважды щелкните на файле AlertViewController.xib, чтобы запустить конструктор интерфейсов (рис. 2.4). 3. В библиотеке конструктора интерфейсов (меню Tools Library) выберите следующие компоненты и перетащите их в окно View, введя соответствующий текст:

Label — Choose a File Open Option; Segmented Control — Found для левого элемента, Not Found для правого; TextView;

Рис. 2.4

87


Алфавитный указатель

А afterDelay, аргумент 502, 515 AVPlayer 22–324, 357, 359, 371, 374–377, 379–380, 382, 592–594, 598, 602

С Core Audio 324

F filePath, переменная 94

I Instruments, утилита 20, 550–551, 556, 565 iOS 4: SDK, ресурсы 620–621 производительность приложения 549, 555, 567 ресурсы/руководства для разработчика 456, 654 целевое приложение для тестирования 520–521 iPad: модальное представление 145–146, 149, 151 навигация 25–29 портретный режим 115, 121, 178–179 приложение для вывода оповещений 86–99 создание нестандартных меню 505–519 списки действий 99, 114–132 iPhone: модальное представление 133–134, 138 приложение для вывода оповещений 86–99 программа для разработчиков 653–655

списки действий 99–114 центр разработки 653 iPod Touch: модальное представление 133–134 объекты iPodLibrary 585 приложение для вывода оповещений 86–99 списки действий 99–114 табличные представления 159–160 iTunes: App Store 20, 520, 568–570, 620, 623–628, 652–653, 655 Connect 327, 358, 569, 587, 625–626, 656 Руководство для разработчиков по iTunes Connect 656

M MobileMe (Apple) 413

N NIB-файлы 616–617 NSEntityDescriptions, коллекция объектов 416

S System Sound Services 323

U UITouch, последовательность 201–202

X Xcode: инструмент для моделирования 417–418

657


Алфавитный указатель

ограничения многозадачности, накладываемые симулятором 585 описание 609–616 шаблон проекта (статические библиотеки) 628–364 XIB-файлы 617

А Аудио: Audio Hardware Service 324 Audio Session Services 324 Audio Toolbox 323–324 Audio Unit, фреймворк 324 приложение для воспроизведения аудио из библиотеки iPod 325–356 фреймворки 322–324 Аудиоприложение с использованием многозадачности: @synthesize, добавление директивы 593–594 внесение изменений в шаблон: iPodLibrary.h 606 iPodLibrary.m 606–607 MusicPlayerViewController.h 602–603 MusicPlayerViewController.m 603–606 RootViewController.h 592–593 RootViewController.m 593–602 методы: canBecomeFirstResponder 597–598 createPlayPauseButtons 603–604 numberOfSectionsInTableView 595–596 remoteControlReceivedWithEvent 597–598 replaceTrack: 595 tableView:cellForRowAtIndex: 596 tableView:numberOfRowsInSection 595–596 viewDidLoad 594–595, 603–604 viewWillAppear 603–604 делегата табличного представления 597

658

для обработки действий с кнопкой 604 обзор 582 полная версия файла: iPodLibrary.h 606 iPodLibrary.m 607 MusicPlayerViewController.h 602–603 MusicPlayerViewController.m 604–606 RootViewController.h 593 RootViewController.m 598–602 пошаговая разработка 587–607 тестирование 608

Б Библиотеки инспектор 615 окно Library (конструктор интерфейсов) 618 справочная библиотека по IOS 4 SDK 621–622 Буферы обмена: вставка элементов 482 вырезание выделенного 482 именованные 480–481 класс UIPasteboard 480–481 меню редактирования 481–483 обзор 479–480 основные концепции 480 постоянство 481 приложение для вырезания/вставки: изображений 494–505 текста 483–493 программные 481 системные 480–481

В Видео: Международная конференция разработчиков (WDC) 654 приложение для проигрывания файлов из библиотеки iPod 356–382 фреймворки 324–325


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.