Introducci贸n al curso

1

Construyamos una app para iOS

2

Introducci贸n a la arquitectura MVVM

3

Planeando nuestra app

Creando las primeras pantallas de la app

4

Programando la primera pantalla en m贸dulos

5

Escribiendo la l贸gica para mostrar dos pantallas

6

Pantalla de inicio de sesi贸n con SecureField y Scroll

7

Completando nuestra pantalla de inicio de sesi贸n

8

Pantalla de registro de usuario

9

Comprobando el funcionamiento de nuestras pantallas

10

Estructura de las pantallas con TabView

11

Creando nuestra pantalla home

12

Pantalla home: logo y barra de b煤squeda

13

Pantalla home: programaci贸n de interfaces est谩ticas

14

Pantalla home: carruseles

Aplicando arquitectura MVVM

15

Creando estructura para arquitectura MVVM

16

Modelando nuestro JSON

17

Peticiones al servidor

18

Mostrar informaci贸n de un servidor de manera din谩mica

19

Mostrar im谩genes de forma din谩mica y eficiente con LazyVGrid

Reproductor y b煤squeda de video

20

Pasar datos entre pantallas

21

Darle datos de inicio a un Canvas

22

Reproducir videos din谩micamente de un servidor

23

Mostrar im谩genes din谩micamente de un servidor

24

Mostrar alertas

25

Programar clase de b煤squeda

26

Programar m茅todo de b煤squeda

脷ltimas pantallas de la app

27

Pantalla de favoritos

28

Pantalla de perfil de usuario

29

M贸dulo de ajustes de perfil con Toggle

30

Pantalla de edici贸n de perfil

31

M贸dulo de edici贸n de perfil

32

Guardado interno de datos

Utilizando la c谩mara y fotos del iPhone

33

Captura de foto de perfil: ImagePicker y vista Sheet

34

Captura de foto de perfil con la c谩mara: modificar librer铆as de terceros

35

Captura de foto de perfil con la c谩mara: recuperar im谩genes guardadas

驴Qu茅 m谩s posibilidades tiene SwiftUI?

36

Mejoremos nuestra app

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Reproducir videos din谩micamente de un servidor

22/36
Recursos

Aportes 4

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Creo que una manera de ahorrar algo de c贸digo al momento de pasar los datos e la vista de detalles puede ser mandar una variable de tipo Game en lugar de enviar variable por variable.

ForEach(gameList.games, id: \.self){ game in
    Button(action: { showVideoOf(game: game)}, label: {
           KFImage(URL(string: game.galleryImages[0])!).resizable()
                      .aspectRatio(contentMode: .fit)
                      .clipShape(RoundedRectangle.init(cornerRadius: 4.0))
                       .padding(.bottom, 12.0)
   })
}
if game != nil {
    NavigationLink(
             destination: GameDetails(game: game!),
             isActive: $isGameDetailsActive,
             label: { EmptyView() })
}
func showVideoOf(game: Game){
    self.game = game
    print("Selected game : \(game)")
    isGameDetailsActive = true
}

Es menos tedioso enviar un objeto Game por parametro en lugar de todas sus propiedades.

struct GameView: View {
    var game: Game!
    
    var body: some View {
        ZStack {
            Color("mainFill").ignoresSafeArea()
            
            VStack {
                Text(game.title)
                    .font(.title)
                    .foregroundColor(.white)
            }
        }
    }
}

Una forma de evitar correr el simulador es 鈥減innear鈥 la vista principal, desde ContentView.swift en el preview se debe presionar el bot贸n 鈥淧in Preview鈥 esto har谩 que ese preview est茅 disponible en los previews de cualquier Vista, de esta manera dentro GameView se puede ir construyendo la interfaz e ir probando el flujo sin necesidad de correr el simulador. A continuaci贸n muestro c贸mo se ve en xcode 14.x el preview de GameView pero pineado ContentView (en xcode 13 o anterior se ve diferente pero el concepto es el mismo:

Es innecesario escribir el 鈥()鈥 para poner la variable en Text, con la variable es suficiente.

Text(game.title)