Ранее мы создали выход вручную, объявив свойство в заголовочном файле класса и проведя соединительную линию от кружка выхода в инспекторе связей в nib-редакторе к кнопке.
Среда Xcode предоставляет много других способов для создания выходов — слишком много, чтобы перечислять их все здесь. Сделаем обзор наиболее интересных способов.
Начнем с удаления выхода из проекта Empty Window (если вы этого еще не сделали). Вместо использования инспектора связей для задания выхода в nib-файле мы будем использовать индикаторы HUD (heads-up display), присоединенные к целевому объекту.
1. В файле ViewController. h создайте (или закомментируйте) объявление свойства;
©property IBOutlet UIButton* button;
2. Находясь в раскадровке, нажмите клавишу <Control> и проведите соединительную линию1 от контроллера представления к кнопке. Контроллер представления представляется либо меткой View Controller в структуре документа, либо первой пиктограммой на доке сцены. Кнопка представляется либо меткой в структуре документа, либо ее графическим представлением на канве.
3. Когда вы отпустите кнопку мыши, на экране появится индикатор HUD, в котором кнопка указана как возможный выход (рис. 7.10). Щелкните на кнопке.
Выражение “проведите соединительную линию” между точками А и В означает, что пользователь должен навести курсор мыши на точку А, нажать кнопку мыши и перетащить курсор в точку В. Когда речь идет о выражении Control-drag, эта процедура выполняется при нажатой клавише <Control>. — Примеч. ред.
Рис. 7.10. Соединение выхода с помощью проведения соединительной линии от объекта-источника
Снова удалите выход. На этот раз начнем в индикатора HUD, присоединенного к объекту-источника.
Pиc. 7.11. Соединение выхода с помощью проведения соединительной линии от объекта-источника
Снова удалите выход. На этот раз начнем с индикатора HUD, присоединенного к целевому объекту.
Снова удалите выход. Теперь мы собираемся создать выход, проведя соединительную линию между кодом и nib-редактором. Для этого необходимо выполнить определенную работу в двух местах: нам необходимо окно помощника. Откройте файл ViewController ,h в главном окне редактирования. Откройте раскадровку в окне помощника, чтобы кнопка была видна.
Рис. 7.12. Соединение выхода с помощью проведения соединительной линии от кода к nib-редактору
Снова удалите выход. На этот раз мы собираемся создать код и связь с выходом за один шаг! Для этого будем использовать двухоконный режим из предыдущего примера.
Создание выхода с помощью непосредственной связи между кодом и nib-редактором очень удобно, но не стоит обольщаться: прямой связи на самом деле не существует. Для того чтобы выход работал правильно, необходимы две разные и отдельные вещи — переменная экземпляра в классе и выход в nib-файле, with the same name and coming from an instance of that class. Именно идентичность имен и классов позволяет сопоставлять их при загрузке nib-файла, чтобы переменная экземпляра была правильно настроена в конкретный момент времени. Среда Xcode пытается помочь настроить все правильно, но это не волшебное соединение кода с nib-файлом.
Pиc. 7.13. Соединение выхода с помощью проведения соединительной линии от nib-редактора к коду
Puc. 7.14. Конфигурирование объявления свойства
Если среда Xcode полагает, что выход настроен правильно, с правильным объявлением выхода в коде и правильной связью в nib-файле, то кружок слева от объявления в коде будет заполнен. Этот кружок служит не только индикатором правильности выхода, но и позволяет открыть всплывающее меню после щелчка, в котором перечисляется то, что может находиться на другом конце связи: щелкните на соответствующем пункте меню и перейдите в nib-редактор, выбрав целевой объект.