Часто возникает необходимость самостоятельно создать выход. Для того чтобы продемонстрировать, как это делается, будем использовать проект Empty Window.

Ранее мы добавили кнопку в его начальное представление главного представления контроллера. Теперь создадим выход от контроллера представления к этой кнопке и назовем его button.

1.            Начнем с анализа источника и цели предполагаемого выхода. Выберите файл Main, storyboard в проекте Empty Window и с помощью инспектора идентичности идентифицируйте класс используемых объектов. Объект источника относится

к классу ViewController. Объект цели относится к классу UIButton. Это значит, что класс ViewCont roller будет использовать переменную экземпляра типа UIButton* (или одного из родительских классов класса UIButton).

2. Теперь создадим выход. Откройте файл ViewController .h. В разделе 0 interface введите строку

Sproperty IBOutlet UIButton* button;

3. Это объявление свойства. До сих пор мы не обсуждали объявления свойств (эту тему мы рассмотрим в главе 12), так что мои слова пока следует принимать на веру. Объявление свойства по существу эквивалентно объявлению переменной экземпляра и методов доступа к ней в одной строку. В реальном проекте я не использую именно такое объявление, но пока можно использовать и такую конструкцию. Ключевым термом здесь является имя IBOutlet; это запрос к среде Xcode, который означает, что мы хотели бы использовать такое свойство как имя выхода, когда источником является экземпляр класса ViewController. Имя IBOutlet соответствует синтаксическим правилам, и хотя среда Xcode может увидеть в этом подсказку, компилятор будет рассматривать ее как эквивалент пустой строки.

4. Откройте файл Main. storyboard еще раз. Выберите класс View Controller и перейдите в окно инспектора связей. Произойдет интересная вещь — в этом окне появился выход кнопки! Это объясняется тем, что мы использовали волшебное слово IBOutlet в объявлении свойства в классе ViewController. Однако этот выход пока не создан. Иначе говоря, инспектор связей сообщает нам, что выбранный объект (View Controller) может служить источником выхода кнопки, но пока им не является. Для того чтобы он стал реальным источником, проведите линию от кружочка у правого края слова button в инспекторе связей к самой кнопке — либо кнопке на канве, либо к ее имени в структуре документа. При этом на экране появится растягивающаяся линия, символизирующая связь, которая тянется за курсором мыши при его перетаскивании, а кнопка подсвечивается, когда курсом мыши оказывается над ней. Отпустите кнопку мыши (рис. 7.9).

 

Связывание выхода с кнопкой из инспектора связей 

Рис. 7.9. Связывание выхода с кнопкой из инспектора связей

 

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

 

Как использовать выход? Если выход правильно настроен, то при выполнении кода после загрузки главного представления контроллера ViewController из nib-файла его свойство button станет ссылкой на кнопку, созданную из nib-файла, и интерфейс приложения станет видимым. Итак, напишем фрагмент кода, использующий свойство button для изменения свойств кнопки. Поскольку кнопка — часть интерфейса, мы должны видеть эти изменения на экране. Давайте изменим заголовок кнопки.

1. Откройте файл ViewController .т.

2. После того как экземпляр контроллера получит свое главное представление, будет выполнен метод viewDidLoad. В данном случае это значит, что он загрузит nib-файл, содержащий его главное представление. Это nib-файл, в котором мы только что создали выход кнопки, ссылающийся на нашу кнопку. При выполнении кода ссылка self. button будет указывать на реальную кнопку в нашем интерфейсе. Вставим следующую строку в метод viewDidLoad method:

[self .button setTitle: @ "Hi ! " f or State: UIControlStateNomal ] ;

3. Соберите и выполните проект. Как видим, несмотря на то, что в раскадровке на кнопке написано «Howdy!», в видимом интерфейсе приложения на ней написано «Hi !». Наш выход работает!


Похожие статьи

 

 

 

 
 

У вас нет прав оставлять комментарии. Зарегистрируйтесь на сайте.