Чтение онлайн

на главную - закладки

Жанры

Программирование на Objective-C 2.0
Шрифт:

Для создания интерфейсов вам потребуются и другие классы, но мы не будем описывать их здесь. Имена некоторых классов объясняют их назначение: UlTextField (Текстовое поле), UIFont (Шрифт), UlView (Представление), UITableView(Табличное представление), UllmageView (Представление изображения), Ullmage (Изображение) и UIButton (Кнопка).

Обе переменные — window и display — являются outlet-переменными. В объявлениях свойств для этих переменных используется идентификатор IBOutlet. IBOutlet определяется как nothing (ничто) в header-файле UINibDeclarations.h для UIKit. (То есть он фактически не заменяется ничем в исходном файле при обработке препроцессором.) Однако он необходим, поскольку Interface Builder ищет IBOutlet, когда читает header-файл, чтобы определить, какие переменные можно использовать как outlet-переменные.

В этом interface-файле отметим объявление метода с именем clickl: ему передается один аргумент с именем sender. При вызове метода clickl: в этом аргументе ему будет передаваться информация, связанная сданным событием. Например, если у нас имеется action-процедура для обработки нажатий различных кнопок, то этот аргумент можно запрашивать для определения нажатой кнопки.

Метод clickl: определен для возврата значения типа IBAction. (Оно определяется как void в файле UINibDectarations.h.) Аналогично IBOutlet, этот идентификатор используется приложением Interface Builder, когда оно просматривает header-файл, чтобы определить, какие методы можно рассматривать как действия (action).

Теперь можно внести изменения в implemcntation-файл iPhoneJAppDelegate.m для нашего класса. Здесь мы синтезируем методы досгупа (accessor method) для переменной display (методы доступа для window уже сип тезированы для вас) и добавляем определение для метода clickl

Внесите изменения в implementation-файл, чтобы он был похож на файл, показанный в программе 21.1.

Программа 21.1. iPhoneJAppDelegate.m #import ""iPhoneJAppDelegate.h"" @implementation iPhoneJAppDelegate @synthesize window, display; -(void) applicationDidFinishlaunching:(U!Application *(application { // Место переопределения для настройки после запуска приложения [window makeKeyAndVisi ble]; } -(IBAction) clickl: (id) sender { (display setText: @T]; } -(void) dealloc { [window release]; [super dealloc]; @end

Метод applicationDidFinishLaunching: автоматически вызывается системой runtime iPhone один раз; как следует из его имени, оно означает, что запуск приложения завершен. Здесь можно инициализировать переменные экземпляра, нарисовать что-то на экране и сделать окно видимым для отображения его содержимого. Последнее действие осуществляется при передаче сообщения makeKeyAndVisible окну (window) в конце этого метода.

Метод clickl: задает отображение этой outlet-переменной в строке 1 с помощью метода UlLabel setText:. Когда мы свяжем нажатие кнопки с вызовом данного метода, он сможет выполнить нужное действие: поместить 1 на дисплей в окне iPhone. Чтобы задать эту связь, вы должны узнать, как используется Interface Builder. Прежде чем сделать это, нужно собрать программу, чтобы удалить предупреждения компилятора или сообшения об ошибках. Проектирование интерфейса

На рис. 21.4 и в вашем главном окне Xcode обратите внимание на файл MainWindow.xib. Файл с расширением »Ь содержит всю информацию о пользовательском интерфейсе для программы, включая информацию о его окнах, кнопках метках, полосах вкладок (tab bar), текстовых полях и т.д. Конечно, у нас еше нет пользовательского интерфейса! Это следующий шаг.

Дважды щелкните на файле MainWindow.xib. Будет запушено еше одно приложение, Interface Builder. Доступ к этому XIВ-файлу можно также выполнить из папки Resources вашего проекта.

При запуске Interface Builder на экране появится последовательность окон (рис. 2I.6, 21.7, 21.8). Окна, которые открываются у вас, могут отличаться от изображенных на рисунках.

Рис. 21.6. Окно Library приложения Interface Builder

Окно Library (Библиотека) содержит набор управляющих элементов интерфейса. Это окно представлено на рис. 21.6я.

Окно MainWindow.xib (рис. 21.7) является управляющим окном для задания связей между кодом приложения и интерфейсом.

Рис. 21.7. Окно Interlace Builder MainWindow.xib

В окне под заголовком Window показан макет главного окна iPhone. Поскольку мы еше ничего не создали для окна iPhone, оно является пустым (рис. 21.8).

Сначала зададим черный цвет для окна iPhone. Для этого щелкните внутри окна под заголовком Window и выберите пункт Inspector в меню Tools (Сервис). Появится окно Inspector (рис. 21.9).

Убедитесь, что окно Inspector называется Window Attributes (Атрибуты окна), как на рисунке 21.9. Если это не так, щелкните на левой вкладке в полосе вкладок, чтобы отобразить нужное окно.

В секции View (Вид) этот окна имеется атрибуте именем Background (Фон). Дважды щелкните внутри белого прямоугольника рядом с меткой Background. Появится указатель цветов. Выберите черный цвет из этого указателя. Цвет прямоугольника рядом с атрибутом Background изменится на черный (рис. 21.10).

Окно Window, представляющее окно отображения iPhone, тоже будет иметь черный цвет (рис. 21.11).

Теперь можно закрыть окно цветов Colors.

Для создания нового объекта в окне интерфейса iPhone нужно щелкнуть на объекте в окне Library и перетянуть его в ваше окно iPhone. Щелкните и перетяните элемент Label (Метка). Отпустите кнопку мыши, когда метка окажется наверху примерно посередине окна (рис. 21.12).

Во время перемещения метки в окне будут показаны синие направляющие линии. Иногда они нужны для выравнивания объектов относительно других объектов, размещенных ранее в этом окне. Иногда они требуются, чтобы объекты находились на достаточном расстоянии друг от друга и от краев окна в соответствии с рекомендациями Apple.

Рис. 21.8. Окно iPhone в Interface Builder

Рис. 21.9. Окно Inspector в Interface Builder

Рис. 21.10. Изменение цвета фона окна

Рис. 21.11. Изменение цвета окна интерфейса на черный цвет

Рис. 21.12. Добавление метки

Вы можете в любой момент перетянуть метку в другое место внутри окна.

Теперь зададим некоторые атрибуты для этой метки. Щелкните на метке, которую вы только что создали, чтобы выделить ее (если она еще не выделена). Отметим, что окно Inspector автоматически изменяется, чтобы вы получали информацию о текущем выбранном объекте в вашем окне. Нам не нужно, чтобы текст по умолчанию появился в этой метке, поэтому измените значение Text на пустую строку, то есть удалите текст Label из текстового поля, показанного в окне Inspector.

Поделиться:
Популярные книги

Сирота

Ланцов Михаил Алексеевич
1. Помещик
Фантастика:
альтернативная история
5.71
рейтинг книги
Сирота

Хозяин Стужи 4

Петров Максим Николаевич
4. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Хозяин Стужи 4

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

На границе империй. Том 10. Часть 9

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 9

Отморозок 4

Поповский Андрей Владимирович
4. Отморозок
Фантастика:
попаданцы
фантастика: прочее
5.00
рейтинг книги
Отморозок 4

Ну привет, заучка...

Зайцева Мария
Любовные романы:
эро литература
короткие любовные романы
8.30
рейтинг книги
Ну привет, заучка...

Локки 7. Потомок бога

Решетов Евгений Валерьевич
7. Локки
Фантастика:
аниме
эпическая фантастика
фэнтези
5.00
рейтинг книги
Локки 7. Потомок бога

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Ермак. Телохранитель

Валериев Игорь
2. Ермак
Фантастика:
альтернативная история
7.50
рейтинг книги
Ермак. Телохранитель

Хозяйка забытой усадьбы

Воронцова Александра
5. Королевская охота
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка забытой усадьбы

Мастер 10

Чащин Валерий
10. Мастер
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 10

Законы Рода. Том 3

Мельник Андрей
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Неучтенный элемент. Том 8

NikL
8. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 8

Болотник

Панченко Андрей Алексеевич
1. Болотник
Фантастика:
попаданцы
альтернативная история
6.50
рейтинг книги
Болотник