Программирование на Objective-C 2.0
Шрифт:
Материал этой главы основывается на Xcode 3.1.1 и iPhone SDK для iPhone OS 2.1. Следующие версии этих продуктов совместимы с изложенным здесь материалом. 21.2. Ваше первое приложение iPhone
В этом приложении показано, как поместить черно-белое окно на экран iPhone, разрешить пользователю нажать на кнопку и вывести текст в ответ на нажатие этой кнопки.
Примечание. Второе приложение еще интересней! В нем используется опыт первого приложения для создания простого калькулятора, позволяющего вы-полнять операции с дробями. Мы можем использовать класс Fraction, с которым работали в предыдущих главах, а также модифицированный класс Calculator. На этот раз калькулятор сможет работать с дробями.
Приступим к первой
На рис. 21.1 показано наше первое приложение для iPhone, которое будет выполняться па имитаторе iPhone (об этом чуть ниже).
Рис. 21.1. Первое приложение для iPhone
В этом приложении при нажатии кнопки «1» на дисплее будет появляться соответствующая цифра (см. рис. 21.2). Оно больше ничего не делает! Это про-стое приложение является основой дня второю приложения, которое представ-ляет калькулятор дш работы с дробями.
Мы создадим приложение с помощью Xcode и пользовательский интерфейс с помощью Interface Builder. Если вы работали с Xcode в предыдущих главах, то можете использовать его для ввода и тестирования своих программ. Как гово-рилось выше, Interface Builder позволяет разрабатывать пользовательский ин-терфейс, размещая элементы пользовательского интерфейса (U1) — таблицы, метки и кнопки — в окне, которое похоже на элемент iPhone. Работа с Interface Builder, как с любым серьезным средством разработки, требует определенного опыта.
Apple распространяет имитатор (simulator) iPhone в составе SDK iPhone. Этот имитатор повторяет многие элементы среды iPhone, включая домашнюю страницу, веб-браузер Safari, приложение Contacts (Контакты) и т.д. Этот имитатор намного упрощает отладку приложений; вам не нужно каждый раз загружать разрабатываемое приложение на реальное устройство iPhone и затем выполнять отладку на этом устройстве.
Рис. 21.2. Первое приложение iPhone
Чтобы запускать приложения на устройстве iPhone, вам нужно зарегистри-роваться как разработчику программ iPhone и заплатить компании Apple 99 долларов (по состоянию на момент написания этой книги). В ответ вы получите код активации, который позволит вам получить сертификат разработки для iPhone (iPhone Development Certificate), чтобы вы могли тестировать и устанавливать приложения на своем iPhone. К сожалению, вы не можете разрабатывать приложения даже для вашего собственного iPhone без прохождения этого процесса. Приложение, которое мы разрабатываем в этой главе, будет загружаться и тестироваться на имитаторе iPhone, а не на устройстве iPhone. Создание нового проекта приложения iPhone
Вернемся к разработке нашего первого приложения. После установки SDK iPhone запустите приложение Xcode. В меню File (Файл) выберите New Project (Новый проект). Под iPhone OS (если этого пункта нет в левой панели, значит, вы не установили SDK iPhone) щелкните на Application (Приложение). Появится окно, показанное на рис. 21.3.
Здесь мы видим шаблоны, которые можно использовать как отправную точку для различных типов приложений, в соответствии с таблицей 21.1.
Рис. 21.3. Запуск нового проекта для iPhone
Табл. 21.1. Шаблоны приложений iPhone Tип приложения Описание Navigation-Based Для приложения, в котором используется контроллер навигации. Contacts — это пример приложения данного типа. OpenGL ES Для графических приложений OpenGL, например, игр. Tab Bar Для приложений, в которых используется полоса вкладок. Примером может служить приложение iPod. Utility Для приложения, где используется представление flipside (обратная
сторона). Примером может служить приложение Stock Quote. View-Based Для приложения, в котором используется одно представление (view). Вы переходите к этому представлению и затем выводите его в окне. Window-Based Для приложения, которое запускается из главного окна iPhone. Его можно использовать как отправную точку для любого приложенияВернувшись к окну New Project, выберите в верхней правой панели Window- Based Application и затем щелкните на кнопке Choose (Выбрать). При последующем запросе ввода имени проекта (в поле Save As —Сохранить как) введите текст iPhone_l и щелкните на кнопке Save (Сохранить). Это имя станет именем вашего приложения по умолчанию. Как вы уже знаете из предыдущих проектов, созданных с помощью Xcode, будет создан новый проект, содержащий шаблоны для необходимых файлов (рис. 21.4).
Рис. 21.4. Создание нового проекта iPhone
В зависимости от ваших настроек и предыдущего использования Xcode ваше окно может несколько отличаться от показанного на рисунке. Вы можете продолжить работу с текущего вида или постараться изменить его так, чтобы он походил на этот рисунок.
В верхнем левом углу окна Xcode мы видим раскрывающийся список, помеченный текущим выбором для SDK и активной конфигурации (Configuration). Поскольку мы не разрабатываем приложение для непосредственного выполнения на iPhone, нужно настроить SDK для работы с имитатором iPhone (Simulator) и для конфигурации задать вариант Debug (Отладка). Если этот рас-крывающийся список не помечен как Simulator | Debug, выберите соответствующие опции, как показано на рис. 21.5.
Рис. 21.5. Проект iPhoneJ с заданными опциями секций SDK и Configuration Ввод кода
Теперь мы можем внести изменения в некоторые файлы проекта. Обратите внимание, что для вас созданы классы «jWtfnpoeK/naAppDelegate.h и илщл/гаек/иаАрр Delegate.m (в данном примере имяпроекта — это iPhonc_l). Вся работа но управлению кнопками и метками в типе приложения Window- based, которое мы создаем, делегируется классу, который называется ш1я«росл:/лаАррDelegate (в данном случае — iPhone_ 1 AppDelegate). В этом классе мы определим методы, чтобы реагировать на действия, возникающие в окне iPhone, такие как нажатие кнопки или перемещение ползунка. Как вы увидите, конкретная связь между этими управляющими элементами и соответствую-щими методами задается в приложении Interface Builder.
Этот класс будет также содержать переменные конфшурации, значения которых соответствуют некоторому управляющему элементу в окне iPhone, например, имя на метке или текст, отображаемый в поле изменяемого текста. Эти переменные называют outlet-переменными, и, аналогично процедурам действий, мы связываем в Interface Builder переменные экземпляра с конкретным управляющим элементом окна iPhone.
Для нашего первого приложения нужен метод, реагирующий на действие, которое состоит из нажатия кнопки с меткой I. Нам нужна также outlet-пере-менная, содержащая (среди прочей информации) текст, который должен отображаться на метке, создаваемой вверху окна iPhone.
Внесем изменения в файл iPhone_1AppDelegate.h, чтобы добавить переменную типа UlLabel с именем display и объявить метод для действия с именем clickl:, чтобы реагировать на нажатие кнопки. Наш файл секции interface показан в программе 21.1. (Здесь нет строк комментария, которые автоматически вставляются в начале файла.)
Программа 21.1. iPhoneJAppDelegate.h #import <UIKit/UIKit.h> @interface iPhoneJAppDelegate : NSObject <UIApplicationDelegate> { UlWindow *window; UlLabel *display; } @property (nonalomic, retain) IBOutlet UlWindow *window; @property (nonatomic, retain) IBOutlet UlLabel *display; -(IBAction) clickl: (id) sender; @end