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

ЖАНРЫ

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

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

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

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

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

Теперь зададим некоторые атрибуты для этой метки. Щелкните на метке, которую вы только

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

Для атрибута Layout (Компоновка) выберите Right-justified (Выравнивание справа) среди вариантов выравнивания (Alignment). И, наконец, измените цвет фона (background) для метки на синий так же, как изменили цвет фона окна на черный. Ваше окно Inspector должно быть похоже на рис. 2I.I3.

Теперь изменим размер метки. Вернемся к окну Window и изменим размер метки, растянув ее углы и стороны. Измените размер и местоположение метки, чтобы она выглядела, как на рисунке 21.14.

Теперь добавим в этот интерфейс кнопку. Из окна Library перетяните объект Round Rect Button в ваше окно интерфейса, поместив его в нижний левый угол окна (рис. 21.15). Метку на этой кнопке можно изменить одним из двух способов: дважды щелкнуть на кнопке и затем ввести нужный текст или ввести текст в поле Title (Заголовок) в окне Inspector. При любом способе сделайте так, чтобы ваше окно было похоже на показанное на рисунке 21.15.

Рис. 21.13. Изменение атрибутов метки

Теперь у нас есть метка, которую нужно связать с переменной экземпляра display, чтобы при задании этой переменной в программе текст метки был изменен.

У нас также есть кнопка с меткой 1, для которой нужно задать вызов метода clickl: при каждом нажатии этой кнопки. Этот метод задаст значение 1 для текстового поля на дисплее. А поскольку эта переменная будет связана с данной меткой, метка будет изменяться. Приведем ниже последовательность, которую нужно задать.

Пользователь нажимает кнопку с меткой 1.

По этому событию вызывается метод dickl:.

Метод clickl: изменяет текст переменной экземпляра display на строку 1.

Поскольку объект DILabel display связан с меткой в окне iPhone, текст этой метки изменяется на соответствующее текстовое значение, равное 1.

Рис. 21.14. Изменение размера и местоположения метки

Рис. 21.15. Добавление кнопки в интерфейс

Для выполнения этой последовательности нам требуются только две привязки.

Сначала свяжем кнопку с методом IBAction clickl:. Для этого удерживайте нажатой клавишу Control во время щелчка на этой кнопке и затем протяните синюю линию, которая появится на экране, к кубику делегата приложения (AppDelegate) в окне MainWindow.xib, как показано рис. 21.16.

Когда вы отпустите кнопку мыши над кубиком делегата приложения, появится раскрывающееся меню, где можно выбрать метод IBAction для привязки к кнопке. В данном случае имеется только один такой метод (с именем clickl:), и он появится в этом раскрывающемся меню. Выберите этот метод, чтобы создать привязку (рис. 21.17).

Теперь выполним привязку переменной display к метке. Нажатие

кнопки вызывает выполнение метода в приложении (то есть управление передается от интерфейса к делегата приложения), задание значения переменной экземпляра в приложении вызывает изменение текста метки в окне iPhone. (Управление передается от делегата приложения к интерфейсу.) Поэтому, удерживая нажатой клавишу Control, щелкните на значке делегата приложения и протяните к метке синюю линию, которая появится в окне Window (рис. 21.18).

Рис. 21.16. Добавление действия для кнопки

Рис. 21.17. Привязка события к методу

Рис. 21.18. Привязка outlet-переменной

Отпустив кнопку мыши, мы получим список outlet-переменных соответствующего класса как элемент управления (UlLabel), среди которых можно сделать выбор. В нашей программе такая переменная одна — с именем display. Выберите ее и выполните привязку (рис. 21.19).

Выберите File->Save в линейке меню Interface Builder и затем Build and Go в Xcode. (Это можно также инициировать из Interface Builder.)

Если все проходит нормально, программа будет успешно собрана и начнет выполняться. При этом она будет сначала загружена в имитатор iPhone, который появится на экране вашего компьютера (см. рис. 21.1). Чтобы имитировать нажатие кнопки в имитаторе, нужно просто щелкнуть на ней. Последовательность шагов и привязок, которая описана выше, будет реализована в виде отображения текстовой строки 1 в метке вверху дисплея, как показано на рис. 21.2.

Рис. 21.19. Завершение привязки 21.3. Калькулятор дробей для iPhone

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

Сначала рассмотрим, как работает приложение. Приложение на имитаторе непосредственно после запуска показано на рис. 21,20.

Этот калькулятор позволяет вводить дроби. Сначала вводится числитель (numerator), затем нужно нажать клавишу с меткой Over и ввести знаменатель (denominator). Таким образом, чтобы ввести дробь 2/5, нужно нажать 2, затем Over и 5. В отличие от других калькуляторов, это приложение показывает простую дробь на дисплее, то есть 2/5 отображается как 2/5.

После ввода дроби нужно выбрать операцию: сложение, вычитание, умножение или деление — и нажать клавишу +, -, х или ?.

После ввода второй дроби нужно завершить операцию, нажав клавишу =, как в стандартном калькуляторе.

Примечание. Этот калькулятор может выполнять только одну операцию над дробями. В упражнении в конце главы от вас потребуется снять это ограниче-ние.

Рис. 21.20. Калькулятор дробей после запуска

По мере нажатия клавиш дисплей непрерывно обновляется. На рис. 21.21 показан дисплей после ввода дроби 4/6 и нажатия клавиши умножения.

На рис. 21.22 показан результат умножения дробей 4/6 и 2/8. Результат 1/6 показывает, что выполняется сокращение результирующей дроби. Запуск нового проекта Fraction_Calculator

Поделиться с друзьями: