Как подключить розетку от выключателя без коробки


Как подключить розетку от выключателя: можно ли запитать, последствия

Содержание статьи:

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

Устройство квартирной или домовой электросети

Во время ремонта часто возникает необходимость обустройства новой электроточки

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

Главная схема квартирной электросети

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

Возможная схема электропроводки в квартире

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

Подключение розетки

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

При подключении розеточного гнезда используют кабели:

  • Фазовый, функция которого – запитать обслуживаемую розетку, неся к ней электрический ток. Это единственный провод, цвет изоляции которого не регламентируется правилами: главное, чтобы он отличался от окрасок других двух кабелей.
  • Нулевой провод с оболочкой синего или голубого цвета. Как и фаза, в распределительной коробке подсоединяется к силовым контактам гнезда.
  • Заземляющий, роль которого – предохранение жильцов от удара током при прикосновении к корпусу электроприбора, а также предотвращение ситуаций короткого замыкания. Изоляционный материал его имеет желтый или зеленый цвет. Проводок соединяется со специальными контактами розетки, отведенными для заземления.

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

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

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

Изменение назначения электроточки и подключение одной от другой

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

Замена розетки на выключатель

Замена розетки на выключатель делается без заземления

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

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

Замена выключателя на розетку

Замена выключателя на розетку требует добавочных кабелей

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

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

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

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

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

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

Схема подключения без распределительной коробки

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

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

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

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

Схема подключения от одного провода

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

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

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

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

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

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

  • замкнуть накоротко кабели осветительного прибора;
  • выключить идущий от кнопочного устройства кабель в распредкоробке и подсоединить к нулевому кабелю группы.

Реализовать полноценное соединение розетки и регулятора освещения весьма проблематично. Эта операция требует монтажа проводников от распредкоробки к розетке.

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

Подключение светильника через выключатель от розетки

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

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

Как установить центральный выключатель света или розетку на 2-местную коробку

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

Обратите особое внимание на стиль вашей распределительной коробки; есть разные решения для покрытия каждого.

Воспользуйтесь ссылками, чтобы найти правильное решение:

Стандартный ящик на 1 группу

Стандартный ящик на 2 группы

Распределительная коробка 4x4 "

Распределительная коробка 4-11 / 16 "

Закрытие коробки на 2 группы одним переключателем

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

Если у вас есть электрическая коробка для 2 устройств, но вам нужен только 1 выключатель или розетка, у вас есть 2 варианта:

  1. установить устройство в сторону
  2. центрируйте устройство

Слева вы увидите, что первое устройство находится сбоку.

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



Добавление устройства в распределительную коробку 4x4 "

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

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


Грязезащитное кольцо удерживается на месте винтами соединительной коробки в противоположных углах.

Затем можно установить выключатель или розетку непосредственно на грязевое кольцо.

Затем на устройство можно установить 2-местную крышку центрального устройства так же, как и стандартную крышку.Примечание: вам может потребоваться обрезать винты крышки.


Монтаж одного устройства в большой квадратной распределительной коробке

Квадратные переходные коробки большего размера размером 4-11 / 16 дюймов могут также содержать одно устройство с добавлением грязевого кольца.



Дополнительное покрытие вокруг одиночной электрической коробки

Крышки для двух секций с вырезом под центральное устройство могут также использоваться с одинарными секциями.

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

Стандартная панель переключателя не закрывает поврежденную стену рядом с переключателем.


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


Эта пластина устанавливается на электрическую коробку так же, как и стандартная крышка.

Разница в том, что стандартная крышка имеет ширину 2-3 / 4 дюйма, в то время как эта более широкая пластина имеет ширину 4-9 / 16 дюймов, что приводит к большему охвату слева и справа от коробки.

Если у вас есть зазор вокруг распределительной коробки с одним блоком, эта пластина решит некрасивую проблему.

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

.

ios - Невозможно создать розетку с кнопкой панели

Переполнение стека
  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.

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

.

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