Skip to content

SwiftUI

Попов Эльдар edited this page Apr 9, 2021 · 54 revisions

Изучение SwiftUI:

  1. Develop Apps with SwiftUI

  2. 100 Days of SwiftUI - focuses on SwiftUI

  3. 100 Days of Swift - focuses UIKit, SpriteKit, and more

  4. Glossary of Common Swift Terms

  5. SwiftUI by Example

Animation TabBar: https://www.youtube.com/watch?v=SythDf1r4oE

NavigationLink

Код:

var body: some View {
    NavigationView {
               NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
                        LandmarkRow(landmark: landmark)
                    }
}

Для того, чтобы при нажатии на button можно было переключиться на новую MVC, мы создаем NavigationLink

в сам код передаем нажимаемую кнопку:

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

Таким образом, при нажатии на Turtle Rock мы переходим на развернутое его описание

@modifiers

@State

@State - это чтобы при нажатии сохранялись сами данные.Cледует использовать с простыми типами структур, которые включают String и Int. атрибут, который является эквивалентом типа класса. The first one is straightforward: @State should be used when you have a value-type property that is owned by the current view. So, integers, strings, arrays of stuff, and more are all great candidates for @State.

@StateObject

@StateObject because the “state” part means “this is owned by the current view.”

Важно помнить, что @State и @StateObjectозначает «это представление владеет данными», в то время как другие оболочки свойств, такие как @ObservedObject и @EnvironmentObjectнет.

@Published - это чтобы эти обновленные данные выводились непостредственно на экране.

@ObservedObject

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

SwiftUI + UIKit

  • Which protocol do you use to bridge UIKit view controllers into SwiftUI?

Create a structure that conforms to UIViewControllerRepresentable and implement the protocol requirements to include a UIViewController in your SwiftUI view hierarchy.

  • In which method do you create a delegate or data source for a UIViewControllerRepresentable type?

Return an instance of the coordinator type from makeCoordinator(). SwiftUI manages its life cycle and provides it as part of the context parameter in other required methods.

SwiftUI - отличный фреймворк, но иногда нам нужно повторно использовать классы UIKit, которые мы годами использовали в iOS SDK . К счастью, это очень просто сделать с помощью протокола UIViewRepresentable

Clone this wiki locally