Как подключить трехклавишный блок с розеткой


Как подключить трехклавишный выключатель - 5 ошибок, схемы и блок с розеткой.

Трехклавишный выключатель света предназначен для управления тремя контурами освещения. Причем в каждом из контуров может быть любое количество лампочек — одна, две, три и более.

Подключение необходимо начинать с подсоединения проводов к выключателю в монтажной коробке. А для этого его сперва необходимо разобрать.

Подключение проводов к выключателю

Снимаете клавиши с выключателя. Начинать нужно с центральной. Обычно под ней имеется зазор. Вставляете в него жало отвертки и с небольшим усилием отщелкиваете клавишу.

Остальные можно снять руками без применения отвертки.

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

Должна остаться центральная часть выключателя с 4-мя контактами. Один сверху и три снизу.

Не всегда верхний контакт может располагаться по центру, имейте это ввиду.

На эту одиночную клемму должен приходить общий фазный проводник питания с распредкоробки.

К трем нижним подключаются провода отходящие на лампочки, то есть на отдельные контура №1, №2, №3.

Для подключения вам понадобится 4-х жильный кабель ВВГнГ-Ls 4*1,5мм2. Из распаечной коробки в штробе, спускаете его в подрозетник, где должен монтироваться выключатель.
После чего начинаете подключение проводов.

На общую центральную клемму подсоединяете фазный проводник.

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

Вставляете выключатель в монтажную коробку и закрепляете его там. Клавиши ставите на место в обратном порядке, начиная с крайних. Просто защелкиваете их обратно на свои места.

При этом обратите внимание на расположение клавиш.

Правильным считается положение, когда освещение включается при нажатии клавиши вверх, а отключается при нажатии вниз.

Теперь необходимо произвести правильное расключение всех проводов в распредкоробке.

Схемы подключения

В распредкоробку может приходить несколько кабелей.

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

Ну а дальше, могут быть варианты. Если у вас одна люстра на 3,6,9 лампочек, то подключить ее можно одним единственным пяти или 4-х жильным кабелем ВВГнГ-Ls сечением 1,5мм2.

Если же у вас три независимых светильника, в разных частях комнаты или дома, то придется тянуть на каждый из них по отдельному 3-х жильному кабелю. Рассмотрим последний вариант подробнее.

Соединения проводов в распредкоробке

Итак, в распредкоробке у вас будет 5 кабелей. Нужно не запутаться и правильно соединить их жилы между собой.

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

То же самое, относится и к заземляющим проводникам. На светильниках они подключаются к корпусу. Хотя в некоторых случаях их вообще может и не быть.

Быстрее всего соединение жил выполнить через клеммные зажимы Ваго. Для нагрузок под освещение это вполне хороший вариант.

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

Особо обратите внимание на то, что ноль не идет на выключатель, а поступает сразу напрямую в светильники. Через контакты трехклавишника должна разрываться только фаза.

Осталось подключить фазные проводники. Начинать нужно с фазы приходящей по кабелю от вводного автомата.

Соединяете ее только с общим фазным проводником, идущим на центральную клемму трехклавишного выключателя и больше никуда. Тем самым вы запустите фазу на переключатель.

Далее соединяете три провода выходящих с клавиш, с тремя фазными проводами отходящих контуров на светильники. Делаете это тремя разными зажимами wago.

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

При правильной сборке в распредкорбке должно получиться 6 точек соединения.

Перед непосредственной подачей напряжения, необходимо еще раз проверить всю схему подключения 3-х клавишного выключателя. Если нет ошибок, то включайте автомат освещения и запускайте клавишами ваши светильники.

Подключение 3-х клавишного выключателя и розетки

Зачастую тройной выключатель устанавливают в один блок с розеткой. Как правильно выполнить такое подключение?

Прежде всего вы должны знать, что для такого монтажа уже необходимо использовать медный кабель сечением 2,5мм2.

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

Кабель 5*2,5мм2 спускаете по штробе к блоку выключатель+розетка. Теперь по нему нужно будет завести не только фазу, но и ноль. Общий фазный проводник лучше подключить к контакту розетки, так как именно на ней, нагрузка больше чем на светильниках.

А уже далее, перемычкой, пустить эту фазу на верхнюю клемму 3-х клавишного выключателя.

Ноль подключается на второй контакт розетки. Остальные три провода, по уже ранее рассмотренной схеме, заводятся под три нижних контакта трехклавишника.

Расключение проводов в распаечной коробке, выполняется практически аналогично рассмотренному выше. За исключением того, что необходимо подключить еще одну нулевую жилу к общей точке нолей.

Ошибки при подключении

1Самая частая ошибка — розетка работает, а выключатель нет.

Дело здесь может быть в том, что вы попросту перепутали фазу и ноль на розетке. И соответственно запустили перемычкой на общую клемму выключателя не фазный провод, а нулевой.

При помощи индикаторной отвертки еще раз перепроверьте куда приходит фаза.

2Если вы монтируете блок розетка-выключатель не на новом месте, а меняете уже существующий, обязательно проверяйте напряжение питания на всех жилах.

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

3Свет на двух клавишах не загорается, пока не включите третью.

Как только ее включаете, все работает как надо. Тут все дело в неправильном подсоединении фазы. Вы ее запустили на выходной контакт третьей клавиши, а не на общий вход.
Опять же все решается проверкой индикатором.

4Чаще всего проблемы возникают при замене старых блоков выключатель-розетка и старых трехклавишников на новые.

Начинаете проверять напряжение на контактах, а индикаторная отвертка вместо одной приходящей фазы показывает три! То есть светится на всех трех контактах одновременно. Как такое возможно?

А дело в том, что выключатель в этом случае разрывает не фазу, а ноль!

Электрик, который непосредственно сам давным-давно подключал старый выключатель, может быть и не виноват. Просто со временем, кто-то другой перекинул провода в счетчике или общей щитовой на вашу квартиру.

Вот и получилось, что там где раньше была фаза, образовался ноль. Зачастую разобраться в щитовых бывает не просто даже самим монтерам.

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

Выкрутите все лампы и еще раз проверьте фазные проводники. Свечение на трех фазах должно исчезнуть. Для правильного подключения здесь уже нужно найти общий ноль и именно его подкидывать на центральный контакт нового трехклавишного выключателя.

А лучше всего найти причину в щитовой, пригласив профессионального электрика и восстановить нормальную схему электроснабжения.

5Старайтесь никогда не подключать розетку в блоке через одну из клавиш.

Многим кажется удобным — нажал клавишу и пропал свет в розетке. Так делать не рекомендуется. Связано это с тем, что обычно через контакты розетки подключают мощную нагрузку, например фен 1,5-2кВт.

А ведь через нее еще можно подключить тройник или удлинитель! Контакты выключателя на ток такой величины и продолжительности вовсе не рассчитаны. В итоге, через некоторое время, у вас исчезнет напряжение во всем блоке, если не случится еще раньше пожар.

Источники — //cable.ru, Кабель.РФ

Статьи по теме

ios - Как подключить 3 UIButton к одной розетке

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

ios - Как подключить IBOutlet и IBAction к контроллеру представления без использования редактора Assistant

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями
.

, объект c - не удается подключить NSView к розетке

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Подключить пользовательский интерфейс к коду

В этом уроке вы подключите основной пользовательский интерфейс (UI) приложения FoodTracker к коду и определите некоторые действия, которые пользователь может выполнять в этом пользовательском интерфейсе.

Цели обучения

По окончании урока вы сможете:

  • Объясните взаимосвязь между сценой в раскадровке и базовым контроллером представления.

  • Создание связей между выходами и действиями между элементами пользовательского интерфейса в раскадровке и исходном коде

  • Обработка пользовательского ввода из текстового поля и отображение результата в пользовательском интерфейсе

  • Сделать класс соответствующим протоколу

  • Понять схему делегирования

  • Следуйте шаблону целевого действия при разработке архитектуры приложения

Подключение пользовательского интерфейса к исходному коду

Элементы раскадровки связаны с исходным кодом.Важно понимать связь раскадровки с кодом, который вы пишете.

В раскадровке сцена представляет один экран содержимого и обычно один контроллер представления. Контроллеры представления реализуют поведение вашего приложения. Контроллер представления управляет одним представлением содержимого с его иерархией подпредставлений. Контроллеры представлений координируют поток информации между моделью данных приложения, которая инкапсулирует данные приложения, и представлениями, которые отображают эти данные, управляют жизненным циклом своих представлений содержимого, обрабатывают изменения ориентации при повороте устройства, определяют навигацию внутри вашего app и реализовать поведение для ответа на ввод пользователя.Все объекты контроллера представления в iOS относятся к типу UIViewController или одному из его подклассов.

Вы определяете поведение своих контроллеров представления в коде, создавая и реализуя подклассы настраиваемых контроллеров представления. Затем вы можете создать связь между этими классами и сценами в раскадровке, чтобы получить поведение, которое вы определили в коде, и пользовательский интерфейс, который вы определили в своей раскадровке.

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

Во время выполнения ваша раскадровка создает экземпляр ViewController , вашего подкласса настраиваемого контроллера представления. Сцена из вашей раскадровки появляется на экране устройства, а поведение пользовательского интерфейса определяется в ViewController.Свифт .

Хотя сцена подключена к ViewController.swift , это не единственное подключение, которое необходимо установить. Чтобы определить взаимодействие в вашем приложении, исходный код вашего контроллера представления должен иметь возможность взаимодействовать с представлениями в вашей раскадровке. Это достигается путем определения дополнительных соединений, называемых выходами и действиями, между представлениями в раскадровке и файлами исходного кода контроллера представления.

Создание выходов для элементов пользовательского интерфейса

Выходы предоставляют способ ссылаться на объекты интерфейса - объекты, добавленные вами в раскадровку, - из файлов исходного кода.Чтобы создать выход, перетащите, удерживая клавишу Control, от определенного объекта в раскадровке к файлу контроллера представления. Эта операция создает свойство для объекта в вашем файле контроллера представления, которое позволяет вам получать доступ к этому объекту и управлять им из кода во время выполнения.

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

Для подключения текстового поля к ViewController.swift с кодом

  1. Откройте свою раскадровку Main.раскадровка .

  2. Нажмите кнопку «Ассистент» на панели инструментов Xcode в правом верхнем углу Xcode, чтобы открыть редактор помощника.

  3. Если вам нужно больше места для работы, сверните навигатор проекта и область служебных программ, щелкнув кнопки Navigator и Utilities на панели инструментов Xcode.

    Вы также можете свернуть вид структуры.

  4. На панели выбора редактора, которая появляется в верхней части помощника редактора, измените помощник редактора с предварительного просмотра на автоматический> ViewController.Свифт .

    ViewController.swift отображается в редакторе справа.

  5. В ViewController.swift найдите строку class , которая должна выглядеть так:

    1. класс ViewController: UIViewController {
  6. Под строкой class добавьте следующее:

    Вы только что добавили комментарий к исходному коду.Напомним, что комментарий - это фрагмент текста в файле исходного кода, который не компилируется как часть программы, но предоставляет контекст или полезную информацию об отдельных фрагментах кода.

    Комментарий, который начинается с символов // MARK: - это особый тип комментария, который используется для организации вашего кода и помогает вам (и всем, кто читает ваш код) перемещаться по нему. Позже вы увидите это в действии. В частности, добавленный вами комментарий указывает на то, что это раздел вашего кода, в котором перечислены свойства.

  7. В раскадровке выберите текстовое поле.

  8. Удерживая нажатой клавишу Control, перетащите из текстового поля на холсте к отображению кода в редакторе справа, остановив перетаскивание в строке под комментарием, который вы только что добавили в ViewController.swift .

  9. В появившемся диалоговом окне в поле «Имя» введите nameTextField . Остальные параметры оставьте как есть.

  10. Щелкните Подключиться.

    Xcode добавляет необходимый код в ViewController.swift для хранения ссылки на текстовое поле и настраивает раскадровку для установки этого соединения.

    1. @IBOutlet weak var nameTextField: UITextField!

Найдите минутку, чтобы понять, что происходит в этой строке кода.

Атрибут IBOutlet сообщает Xcode, что вы можете подключиться к свойству nameTextField из Interface Builder (вот почему атрибут имеет префикс IB ).Ключевое слово weak указывает, что ссылка не мешает системе освободить указанный объект. Слабые ссылки помогают предотвратить циклы ссылок; однако, чтобы объект оставался живым и находился в памяти, вам необходимо убедиться, что какая-то другая часть вашего приложения имеет сильную ссылку на объект. В данном случае это супервизор текстового поля. Суперпредставление поддерживает сильную ссылку на все свои подвиды. Пока супервизор остается живым и находится в памяти, все субпредставления также остаются живыми.Точно так же контроллер представления имеет сильную ссылку на свое представление содержимого - поддерживая всю иерархию представлений в памяти и в действии.

Остальная часть объявления определяет неявно развернутую необязательную переменную типа UITextField с именем nameTextField . Обратите особое внимание на восклицательный знак в конце объявления типа. Этот восклицательный знак указывает, что тип является неявно развернутым необязательным типом, который является необязательным типом, который всегда будет иметь значение после его первой установки.Когда вы обращаетесь к неявно развернутому необязательному параметру, система предполагает, что он имеет допустимое значение, и автоматически развертывает его для вас. Обратите внимание, что это приводит к завершению работы приложения, если значение переменной еще не было установлено.

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

Теперь подключите метку к вашему коду так же, как вы подключили текстовое поле.

Для подключения метки к ViewController.swift код

  1. В раскадровке выберите метку.

  2. Удерживая нажатой клавишу «Control», перетащите от метки на холсте к отображению кода в редакторе справа, остановив перетаскивание в строке сразу под свойством nameTextField в ViewController.swift .

  3. В открывшемся диалоговом окне в поле «Имя» введите foodNameLabel .Остальные параметры оставьте как есть.

  4. Щелкните Подключиться.

Опять же, Xcode добавляет необходимый код в ViewController.swift для хранения ссылки на метку и настраивает раскадровку для установки этого соединения. Этот выход похож на текстовое поле, за исключением своего имени и типа (это UILabel , чтобы соответствовать типу объекта в раскадровке).

  1. @IBOutlet weak var foodNameLabel: UILabel!

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

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

Определите действие для выполнения

Приложения для iOS основаны на программировании, управляемом событиями.То есть поток приложения определяется событиями: системными событиями и действиями пользователя. Пользователь выполняет действия в интерфейсе, которые запускают события в приложении. Эти события приводят к выполнению логики приложения и манипулированию его данными. Затем реакция приложения на действие пользователя отражается в пользовательском интерфейсе. Поскольку пользователь, а не разработчик, контролирует выполнение определенных частей кода приложения, вы хотите точно определить, какие действия пользователь может выполнять и что происходит в ответ на эти действия.

Действие (или метод действия) - это фрагмент кода, связанный с событием, которое может произойти в вашем приложении. Когда это событие происходит, система выполняет код действия. Вы можете определить метод действия для выполнения чего угодно, от манипулирования фрагментом данных до обновления пользовательского интерфейса. Вы используете действия, чтобы управлять потоком вашего приложения в ответ на пользовательские или системные события.

Вы создаете действие так же, как создаете розетку: удерживая нажатой клавишу Control, перетащите из определенного объекта в раскадровке в файл контроллера представления.Эта операция создает метод в вашем файле контроллера представления, который запускается, когда пользователь взаимодействует с объектом, к которому прикреплен метод действия.

Начните с создания простого действия, которое устанавливает для метки значение Default Text всякий раз, когда пользователь нажимает кнопку Set Default Text. (Код для установки метки для текста в текстовом поле немного сложнее, поэтому вы напишите его в разделе «Обработка пользовательского ввода».)

Чтобы создать действие setDefaultLabelText в ViewController.быстрый код

  1. В ViewController.swift , чуть выше последней фигурной скобки (} ), добавьте следующее:

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

  2. В раскадровке нажмите кнопку «Установить текст метки по умолчанию».

  3. Удерживая нажатой клавишу «Control», перетащите кнопку «Установить текст метки по умолчанию» на холсте к отображению кода в редакторе справа, останавливая перетаскивание в строке под комментарием, который вы только что добавили в ViewController.Свифт .

  4. В появившемся диалоговом окне для Connection выберите Action.

  5. В поле Имя введите setDefaultLabelText .

  6. В поле Тип выберите UIButton .

    Вы могли заметить, что значение поля Type по умолчанию - AnyObject . В Swift AnyObject - это тип, используемый для описания объекта, который может принадлежать любому классу. Определение типа этого метода действия как UIButton означает, что только объекты кнопок могут подключаться к этому действию.Хотя это несущественно для действия, которое вы создаете прямо сейчас, о нем важно помнить на потом.

    Остальные параметры оставьте как есть.

  7. Щелкните Подключиться.

Xcode добавляет необходимый код в ViewController.swift для настройки метода действия.

  1. @IBAction func setDefaultLabelText (_ отправитель: UIButton) {
  2. }

Параметр отправителя относится к объекту, который был ответственен за запуск действия - в данном случае к кнопке.Атрибут IBAction указывает, что метод - это действие, к которому можно подключиться из раскадровки в Интерфейсном Разработчике. Остальная часть объявления объявляет метод с именем setDefaultLabelText (_ :) .

Сейчас объявление метода пусто. Код для сброса значения метки довольно прост.

Для реализации действия сброса метки в коде ViewController

  1. В ViewController.swift найдите метод действия setDefaultLabelText , который вы только что добавили.

  2. В реализации метода между фигурными скобками ( {} ) добавьте следующую строку кода:

    1. foodNameLabel.text = "Текст по умолчанию"

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

    Обратите внимание, что вам не нужно указывать тип текста по умолчанию, потому что вывод типа Swift может видеть, что вы назначаете что-то типа String , и может правильно вывести тип.

iOS обрабатывает весь код перерисовки за вас, так что это фактически весь код, который вам нужно написать на данный момент. Ваш метод действия setDefaultLabelText (_ :) должен выглядеть так:

  1. @IBAction func setDefaultLabelText (_ отправитель: UIButton) {
  2. foodNameLabel.text = "Текст по умолчанию"
  3. }

Контрольная точка: Проверьте свои изменения, запустив симулятор.Когда вы нажимаете кнопку «Установить текст метки по умолчанию», вызывается ваш метод setDefaultLabelText (_ :) , и значение текста объекта еды foodNameLabel изменяется с Meal Name (значение, установленное в раскадровке) на Default Text (значение, заданное действием). Вы должны увидеть изменения в своем пользовательском интерфейсе.

Хотя изменение названия блюда на «Текст по умолчанию» не особо полезно, оно иллюстрирует важный момент. Только что реализованное поведение является примером шаблона целевого действия в дизайне приложения для iOS.Целевое действие - это шаблон проектирования, при котором один объект отправляет сообщение другому объекту при наступлении определенного события.

В этом случае:

  • Событие - это нажатие пользователем кнопки «Установить текст по умолчанию».

  • Действие - setDefaultLabelText (_) .

  • Целевой объект - ViewController (где определен метод действия).

  • Отправителем является кнопка «Установить текст метки по умолчанию».

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

Процесс пользовательского ввода

На этом этапе пользователи могут сбросить метку названия еды до значения по умолчанию, но вы действительно хотите, чтобы пользователи вводили свои собственные названия еды, используя текстовое поле.Чтобы не усложнять задачу, вы обновите значение text объекта foodNameLabel всякий раз, когда пользователь вводит текст в текстовое поле и нажимает Return.

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

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

Любой объект может выступать в роли делегата для другого объекта, если он соответствует соответствующему протоколу. Протокол, определяющий делегата текстового поля, называется UITextFieldDelegate . Очень часто контроллер представления становится делегатом для объектов, которыми он управляет. В этом случае вы сделаете свой экземпляр ViewController делегатом текстового поля.

Во-первых, ViewController должен принять протокол UITextFieldDelegate .Вы принимаете протокол, перечисляя его как часть строки объявления класса.

Принять протокол UITextFieldDelegate

  1. Если помощник редактора открыт, вернитесь в стандартный редактор, нажав кнопку Стандартный.

  2. Разверните навигатор проекта и область служебных программ, щелкнув кнопки Navigator и Utilities на панели инструментов Xcode.

  3. В навигаторе проекта выберите ViewController.Свифт .

  4. В ViewController.swift найдите строку class , которая должна выглядеть так:

    1. класс ViewController: UIViewController {
  5. После UIViewController добавьте запятую (, ) и UITextFieldDelegate , чтобы принять протокол.

    1. класс ViewController: UIViewController, UITextFieldDelegate {

Приняв протокол UITextFieldDelegate , вы сообщаете компилятору, что класс ViewController может действовать как действительный делегат текстового поля.Это означает, что вы можете реализовать методы протокола для обработки ввода текста и назначить экземпляры класса ViewController в качестве делегата текстового поля.

Чтобы установить объект ViewController в качестве делегата его свойства nameTextField

  1. В ViewController.swift найдите метод viewDidLoad () , который должен выглядеть так:

    1. функция отмены viewDidLoad () {
    2. супер.viewDidLoad ()
    3. // Выполните какие-либо дополнительные настройки после загрузки представления, обычно из пера.
    4. }

    Реализация этого метода в шаблоне включает комментарий. Вам не нужен этот комментарий в реализации вашего метода, поэтому удалите его.

  2. Под строкой super.viewDidLoad () добавьте пустую строку и следующее:

    1. // Обработка пользовательского ввода текстового поля через обратные вызовы делегатов.
    2. nameTextField.delegate = self

    self относится к классу ViewController , потому что ссылка на него находится внутри области определения класса ViewController .

    Вы можете добавлять свои собственные комментарии, чтобы понять, что происходит в вашем коде.

Ваш метод viewDidLoad () должен выглядеть так:

  1. функция отмены viewDidLoad () {
  2. супер.viewDidLoad ()
  3. // Обработка пользовательского ввода текстового поля через обратные вызовы делегатов.
  4. nameTextField.delegate = self
  5. }

Когда экземпляр ViewController загружается, он устанавливает себя в качестве делегата своего свойства nameTextField .

Протокол UITextFieldDelegate определяет восемь дополнительных методов.Просто реализуйте те, которые вам нужны, чтобы добиться желаемого поведения. На данный момент вам нужно реализовать два из этих методов:

  1. func textFieldShouldReturn (_ textField: UITextField) -> Bool
  2. func textFieldDidEndEditing (_ textField: UITextField)

Чтобы понять, когда вызываются эти методы и что они должны делать, важно знать, как текстовые поля реагируют на пользовательские события. Когда пользователь касается текстового поля, он автоматически становится первым респондентом.В приложении первый респондент - это объект, который первым на линии принимает многие виды событий приложения, включая ключевые события, события движения и сообщения действий, среди прочего. Другими словами, многие события, генерируемые пользователем, первоначально направляются первому респонденту.

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

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

Здесь и появляется ваша реализация методов UITextFieldDelegate . Вам необходимо указать, что текстовое поле должно отказаться от своего статуса первого респондента, когда пользователь нажимает кнопку для завершения редактирования в текстовом поле.Вы делаете это в методе textFieldShouldReturn (_ :) , который вызывается, когда пользователь нажимает Return (или, в данном случае, Done) на клавиатуре.

Для реализации метода протокола UITextFieldDelegate textFieldShouldReturn (_ :)

  1. В ViewController.swift , прямо над разделом // MARK: Actions , добавьте следующее:

    1. // МАРКА: UITextFieldDelegate

    Этот комментарий используется для организации вашего кода и помощи вам (и всем, кто читает ваш код) в навигации по нему.

    Вы уже добавили несколько таких комментариев. Xcode перечисляет каждый из этих комментариев как заголовок раздела в меню функций файла исходного кода, которое появляется, если вы щелкаете имя файла в верхней части области редактора. Меню функций позволяет быстро перейти к разделу кода. Вы увидите разделы, обозначенные вами как // MARK: , перечисленные здесь. Вы можете нажать на один из заголовков раздела, чтобы перейти к этому разделу в файле.

  2. Под комментарием добавьте следующий метод:

    1. func textFieldShouldReturn (_ textField: UITextField) -> Bool {
    2. }
  3. В этом методе добавьте следующий код, чтобы отказаться от статуса первого респондента текстового поля, и комментарий, чтобы описать, что делает код:

    1. // Скрыть клавиатуру.
    2. textField.resignFirstResponder ()

    Попробуйте ввести вторую строку вместо простого копирования и вставки. Вы обнаружите, что автозавершение кода - одна из замечательных функций Xcode, экономящих время. Когда Xcode отобразит список возможных завершений, прокрутите список, пока не найдете тот, который вам нужен, а затем нажмите Return. Xcode вставляет за вас всю строку.

  4. В этом методе добавьте следующую строку кода:

    Этот метод возвращает логическое значение, которое указывает, должна ли система обрабатывать нажатие клавиши Return.В этом случае вы всегда хотите ответить пользователю, нажав клавишу Return, поэтому просто верните true .

Ваш метод textFieldShouldReturn (_ :) должен выглядеть так:

  1. func textFieldShouldReturn (_ textField: UITextField) -> Bool {
  2. // Скрыть клавиатуру.
  3. textField.resignFirstResponder ()
  4. возврат верно
  5. }

Второй метод, который вам нужно реализовать, textFieldDidEndEditing (_ :) , вызывается после того, как текстовое поле отказывается от своего статуса первого респондента.Поскольку вы отказываетесь от статуса первого респондента в textFieldShouldReturn , система вызывает этот метод сразу после вызова textFieldShouldReturn .

Метод textFieldDidEndEditing (_ :) дает вам возможность прочитать информацию, введенную в текстовое поле, и что-то с ней сделать. В вашем случае вы возьмете текст, который находится в текстовом поле, и воспользуетесь им для изменения значения вашего ярлыка.

Для реализации метода протокола UITextFieldDelegate textFieldDidEndEditing (_ :)

  1. В ViewController.swift , после метода textFieldShouldReturn (_ :) добавьте следующий метод:

    1. func textFieldDidEndEditing (_ textField: UITextField) {
    2. }
  2. В этом методе добавьте следующую строку кода:

    1. foodNameLabel.text = textField.text

Это все, что вам нужно сделать, чтобы увидеть результат.Ваш метод textFieldDidEndEditing (_ :) должен выглядеть так:

  1. func textFieldDidEndEditing (_ textField: UITextField) {
  2. foodNameLabel.text = textField.text
  3. }

Контрольная точка: Проверьте свои изменения, запустив симулятор. Вы можете выбрать текстовое поле и ввести в него текст. Когда вы нажимаете кнопку «Готово» на клавиатуре, клавиатура закрывается, и текст метки изменяется, отображая текст в текстовом поле.Когда вы нажимаете кнопку «Установить текст метки по умолчанию», метка меняется с того, что в настоящее время отображается в метке, на Текст по умолчанию (значение, установленное действием, которое вы определили ранее).

Заключение

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

Примечание

Чтобы увидеть завершенный пример проекта для этого урока, загрузите файл и просмотрите его в Xcode.

Загрузка файла

.

Смотрите также