Данная статья представляет собой введение в программирование под iPhone/iPad. В ней будут рассмотрены инструменты, необходимые для создания приложений, а также создано небольшое приложение для iPhone.
В 2010 году на конференции разработчиков WWDC компания Apple представила новую версию Xcode 4 (предыдущая версия - Xcode 3). В дальнейшем мною будет использоваться именно эта версия среды разработки.
Для установки и первого запуска необходим любой Mac с процессором Intel и установленной Mac OS X 10.6 Snow Leopard (или выше).
Xcode 3 и Xcode 4 можно скачать бесплатно с сайта developer.apple.com.
Установка достаточно проста - нужно следовать инструкциям установщика, убедиться, что отмечен пункт iPhone SDK и не менять стандартное место установки.
После установки запустить Xcode можно из папки Macintosh HD -> Developer -> Applications.
Итак, всё готово, чтобы написать первое приложение и одновременно разобраться в новом интерфейсе программы.
Запустим Xcode 4, после запуска появится окно приветствия:
В левой части располагаются "команды" «Создать новый проект», «Создать проект из репозитория» и ссылки на справочную информацию. В правой части окна расположен список существующих проектов.
Нажмем “Create a new Xcode project” и выберем View-based Application.
Выбираем название проекта. Приложения с графическим интерфейсом обычно именуются с заглавной буквы, а если приложение предназначено для запуска из командной строки, - с прописной.
Далее выбираем куда сохранить проект. Я рекомендую создать отдельную папку для хранения всех проектов, например, создать папку Developer в домашней директории:
После того, как вы нажали Create, перед вами появляется главное окно программы:
В левой части расположен список файлов, входящих в проект, над ним небольшие иконки, открывающие другие вкладки: поиск, логи, отладка.
Xcode поддерживает одновременное использование вкладок, которые очень похожи на вкладки в браузерах, при этом каждую вкладку можно организовать как отдельное рабочее пространство, разделив экран на несколько частей:
Одним из ключевых отличий Xcode 4 от предшественника является интегрированный Interface Builder, который раньше был отдельной программой. Interface Builder, как понятно из названия, предоставляет графический интерфейс для построения интерфейсов приложений перетягиванием элементов из библиотеки и настройки свойст в Инспекторе (аналогичном инспектору в стандартных приложениях Mac OS X).
Итак, рассмотрим файлы в данном проекте.
В папке FirstApp находятся файлы, с которыми мы чаще всего будем работать:
1) Пары файлов с расширениями .h и .m - это интерфейсы и реализации наших классов соответственно.
2) Файлы с расширением .xib (или .nib) хранят наш графический интерфейс.
3) В файлах .plist хранятся настройки нашего приложения.
В нашем первом приложении мы используем два элемента - слайдер (UISlider) и текстовое поле (UILabel). Приложения для iOS создаются с использованием паттерна MVC (Model-View-Controller). О нём я расскажу в следующих статьях. Хорошей практикой является написание в первую очередь API (программного интерфейса приложения), и далее назначение элементов интерфейса для взаимодействия с ним.
Но в сегодняшнем примере мы пойдем по другому пути. Наше приложение будет выводить на экран значение текущей позиции слайдера и обновлять его при каждом перемещении слайдера.
Откройте файл FirstAppViewController.xib, в появившемся Interface Builder перетяните элементы UILabel и UISlider в окно нашего приложения.
Можно менять размер элементов, а также настраивать вид их отображения, используя свойства в правой части окна.
Приступим к реализации нашего приложения. Для этого откроем файл FirstAppViewController.m и нажмем кнопку Assistant, чтобы в правой части экрана появился связанный с ним файл FirstAppViewController.h
Как мы помним, в нашем приложении два объекта - UILabel, отображающий строки, и UISlider имеющий свойство value (значение), передающее десятичное значение float (с плавающей точкой) позиции слайдера.
В файле .h мы объявляем переменные, методы, объекты, а в файле .m описываем их реализацию.
Начем с FirstAppViewController.h. В поле
@interface FirstAppViewController : UIViewController {
// объекты и переменные
}
между фигурными скобками {…} добавим наши объекты UILabel и UISlider:
@interface FirstAppViewController : UIViewController {
IBOutlet UILabel *labelValue;
IBOutlet UISlider *sliderValue;
}
после закрывающейся скобки «}» и перед @end располагаются методы. Подробнее о методах я расскажу в следующих статьях. Сейчас можно представить, что это аналог функции в языке Си, адресованный объекту.
В нашем примере будет всего один метод - (IBAction)valueChanged;
Перейдем к реализации нашего класса. Существующий код в файле FirstAppViewController.m можно удалить, оставив
#import "FirstAppViewController.h"
@implementation FirstAppViewController
@end
Между @implementation и @end располагается реализация нашего класса. Директива #import сообщает, что мы можем использовать описания из головного (header) файла нашего класса.
В нашей реализации всего один метод:
@implementation FirstAppViewController
- (IBAction)valueChanged {
}
@end
Нам нужно получить значение из UISlider, для чего мы используем дополнительную переменную:
float sliderValue;
Далее присваиваем этой переменной значение текущей позиции слайдера:
sliderValue = [slider value];
Скобки [получатель сообщение] типичный синтаксис Objective-C, когда объекту (получателю) отправляется метод (сообщение) и в итоге возвращается соответствующее значение.
Теперь у нас есть переменная, хранящая значение UISlider в формате float, однако UILabel может отображать только строковые данные (формат NSString). Необходимо отобразить float sliderValue как строку. Для этого используем метод для работы со строками -stringWithFormat, возвращающий объект строку NSString.
NSString *labelValue = [NSString stringWithFormat:@"%f", sliderValue];
Выше мы создаем объект labelValue, используя метод с аргументом stringWithFormat:аргумент. Аргументом выступает sliderValue.
Далее выводим строку в UILabel:
[label setText:labelValue];
Если мы запустим приложение и изменим положение слайдера ничего не произойдет. Дело в том, что мы не связали элементы интерфейса в Interface Builder с нашими объектами в реализации.
Interface Builder предоставляет графический интерфейс для решения нашей задачи. Откроем файл FirstAppViewController.xib и, нажав Ctrl, перетянем File’s Owner на UILabel в окне нашего приложения, после чего выберем label, повторим тоже самое с UISlider. Следует отметить, когда мы связываем Outlets, направление перетягивания - от File’s Owner к элементу интерфейса, а когда связываем метод (Action) - наоборот. Поэтому произведём теже действия с нажатой кнопкой Ctrl от UISlider к File’s Owner и выберем valueChanged:
Теперь можно запускать приложение и перемещать слайдер, наблюдая изменяющееся значение в UILabel. Значение, которое мы видим в UILabel, по умолчанию изменяется от 0 до 1 и установлено в положении 0.5.
Однако эти значения можно настроить в Interface Builder, выделив UISlider в окне приложения:
Комментариев нет:
Отправить комментарий