0Pricing
Swift Academy · Урок

@Binding: двусторонняя передача данных

Передавайте изменяемое состояние вниз по иерархии представлений с помощью @Binding и префикса $.

«@Binding: двусторонняя передача данных» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Добро пожаловать

`@Binding` создаёт двустороннюю связь между состоянием родительского представления и дочерним представлением, позволяя дочернему представлению читать и изменять значение родителя, не владея им.

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

```swift struct Parent: View { @State private var name = "" var body: some View { ChildView(name: $name) // $ creates Binding } } struct ChildView: View { @Binding var name: String var body: some View { TextField("Name", text: $name) } } ```

Префикс $

`$name` у свойства `@State` возвращает `Binding` — ссылку на хранилище родительского представления, позволяющую читать и записывать значение в обоих направлениях.

Запись через привязку

```swift struct Toggle: View { @Binding var isOn: Bool var body: some View { Button(isOn ? "On" : "Off") { isOn.toggle() } } } ```

Константная привязка для предварительных просмотров

```swift #Preview { ChildView(isOn: .constant(true)) // non-mutable binding for preview } ```

Привязка к элементу коллекции

```swift ForEach($items) { $item in // $items is Binding<[Item]> TextField("Name", text: $item.name) } ```

Сводка: @State и @Binding

• `@State` — *владеет* значением, которое хранится в представлении • `@Binding` — *ссылается* на состояние другого представления, не владея им • Изменения через `@Binding` передаются обратно владельцу

Производная привязка

```swift let isLarge: Binding = $fontSize.map( get: { $0 > 18 }, set: { $0 ? 24 : 14 } ) ```

Привязка к необязательному значению

```swift if let $item = $selectedItem { DetailView(item: $item) } ``` Swift 5.7+ поддерживает необязательные привязки с помощью `if let $binding`.

Несколько привязок

```swift struct Form: View { @State private var name = "" @State private var age = 0 var body: some View { FormFields(name: $name, age: $age) } } ```

Быстрая проверка

Что возвращает префикс `$` у свойства `@State`?

Итоги

Основные выводы: • `@Binding var x: T` — ссылка для чтения и записи, не владеющая значением • `$stateProperty` создаёт `Binding` • `.constant(value)` используется для неизменяемых привязок в предварительных просмотрах • Запись дочернего представления через `@Binding` обновляет `@State` родителя • `ForEach($collection) { $element in }` используется для изменяемой итерации Далее: @ObservableObject.

Часто задаваемые вопросы

Урок «@Binding: двусторонняя передача данных» бесплатный?

Да — полный текст урока «@Binding: двусторонняя передача данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «@Binding: двусторонняя передача данных»?

Передавайте изменяемое состояние вниз по иерархии представлений с помощью @Binding и префикса $. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

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

Сколько времени занимает урок «@Binding: двусторонняя передача данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. @Binding: двусторонняя передача данных
  2. @ObservableObject и @StateObject
  3. @EnvironmentObject для общего состояния
  4. Единый источник истины и однонаправленный поток
← Назад к Swift Academy