State, Binding

State, Binding

Mikhail Pushkarev

Привет мой друг) Сегодня разберем такие структуры как State и Binding. Со State ты уже вкратце познакомился в предыдущей домашке. А сегодня я покажу как с ним можно работать в других направлениях.

А вообще State и Binding ходят вместе парой😂, но только при необходимости)

От слову к делу..

о State...

Как написано в документации, State это тип оболочки свойства, который может читать и записывать значение, управляемое SwiftUI.

Более понятно станет в этом видео:

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

  • В SwiftUI данные управляют пользовательским интерфейсом
  • Ты не можешь просто изменить свойство "name"
  • @State делает представление зависимым от состояния
  • Когда значение свойства - "state" - изменяется, представление также должно обновляться.


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

В title: естественно должна быть только строка.

В action: ( ) → Void - реализация кнопки

Вот собственно как на фото ниже:

А второй вариант предусматривает использование action и label

Здесь уже можно развернуться на всю катушку😉

И так для тебя мини задание. Сделать следующие кнопки:

  • Кнопка в виде сердца
  • Кнопка с ободком и надписью "Finish"

Подсказки:

  • Для сердца используй такую штуку как: .overlay( )
  • Для финиша используй: .stroke( )

Видео с реализацией и кодом пришли мне личку.


о Binding...

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

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

Смотрим видео и разбираемся:

@Binding позволяет нам объявить, что одно значение на самом деле исходит из другого места и должно использоваться в обоих местах. Это не то же самое, что @ObservedObject или @EnvironmentObject, оба из которых предназначены для использования ссылочных типов в потенциально многих представлениях.

О @ObservedObject и @EnvironmentObject поговорим в следующем конспекте.


Обязательные материалы к изучению:


Report Page