Вход/Регистрация
Программирование на Objective-C 2.0
вернуться

Кочан Стивен

Шрифт:

Отметим, что приложения iPhone импортируют header-файл . Этот файл импортирует, в свою очередь, другие header-файлы UIKit, что аналогично импорту в файле Foundation.h других нужных header-файлов, например, NSString.h и NSObject.h. Чтобы посмотреть содержимое этого файла, нужно пройти достаточно длинный путь. На момент написания этой книги он содержался в папке /Devetoper/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulatог2.1.sdk/System/Library/Franriewor ks/UIKit.framework/Headers/.

Теперь класс iPhoneJAppDelegate содержит две переменные экземпляра. Первая — это объект UlWindow с именем window. Эта переменная экземпляра создается автоматически, когда мы создаем проект, и является ссылкой на главное окно iPhone. Мы добавили еще одну переменную экземпляра с именем display, которая принадлежит классу UlLabel. Это outlet-псрсмснная, которая будет связана с меткой. Когда мы задаем текстовое поле для этой переменной, происходит изменение текста для метки в окне. Другие методы, определенные для класса UlLabel, позволяют задавать и считывать такие атрибуты метки, как цвет, число строк и размер шрифта.

Для создания интерфейсов вам потребуются и другие классы, но мы не будем описывать их здесь. Имена некоторых классов объясняют их назначение: 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) является управляющим окном для задания связей между кодом приложения и интерфейсом.

  • Читать дальше
  • 1
  • ...
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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