es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible cambiar entre archivos de vista a través de un selector rápido?

Teniendo tres archivos separados para diferentes vistas, estoy tratando de unirlos en un archivo CheckerView que se llama desde el principal en WindowGroup. Quiero que mi selector cambie las vistas al deslizar entre etiquetas como se muestra en Implementación de CheckerView. Las otras dos vistas que actualmente no se muestran están comentadas. Vista Correcta Primaria Vista Incorrecta Secundaria. Creo que necesito usar enumeraciones, pero no estoy seguro de cómo abordar esto, ya que recién acabo de aprender el lenguaje. Había implementado correctamente una funcionalidad similar a través de tabView, sin embargo, el selector se aplica mejor a lo que estoy intentando hacer. ¡Gracias por la ayuda!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Reuniendo varias vistas en el archivo CheckerView

    Como experto en tecnologías de la información especializado en Swift, SwiftUI, UIPickerView y Picker, estás intentando juntar tres archivos separados en un archivo CheckerView que se llama desde el principal en WindowGroup. Quieres que tu selector cambie de vista cuando se desliza entre las etiquetas. La vista correcta en primer lugar se muestra en imagen 1[1], mientras que la segunda vista incorrecta se muestra en “>imagen 2[3]. Actualmente, las otras dos vistas están comentadas.

    Para lograr esta funcionalidad, crees que necesitas usar enums. Sin embargo, no estás seguro de cómo hacerlo ya que has aprendido el lenguaje recientemente. Anteriormente, habías implementado correctamente una funcionalidad similar a través de tabView; sin embargo, el selector se adapta mejor a lo que estás intentando hacer.

    Para implementar la funcionalidad requerida, puedes crear un enum que defina diferentes vistas como casos. El índice de cada vista en el enum se puede utilizar para identificarla y cambiar entre ellas según el índice del elemento seleccionado en el selector.

    Aquí están los pasos que puedes seguir:

    1. Crea un enum que defina diferentes vistas como casos.
    enum ViewType: Int, CaseIterable {
        case correctFirstView
        // case añade tus otras vistas aquí, sin comentar
    }
    
    1. Define una variable @State para almacenar el índice seleccionado en el selector.
    @State private var viewTypeIndex = 0
    
    1. En el archivo CheckerView, crea una propiedad calculada que devuelva la vista adecuada según el índice del elemento seleccionado en el selector.
    var activeView: some View {
        switch ViewType(rawValue: viewTypeIndex) {
        case .correctFirstView:
            return AnyView(CorrectFirstView())
        // case añade tus otras vistas aquí, sin comentar
        case .none:
            return AnyView(Text("No se encontró ninguna vista."))
        }
    }
    
    1. Reemplaza la vista estática en el cuerpo con la propiedad calculada.
    var body: some View {
        VStack {
            Picker(selection: $viewTypeIndex, label: Text("Selecciona una vista")) {
                ForEach(0..<viewtype.allcases.count) { index in
                    text(viewtype(rawvalue: index)?.description ?? "")
                }
            }
            .pickerstyle(segmentedpickerstyle())
    
            activeview
        }
    }
    
    1. quita los comentarios de las segundas y terceras vistas que previamente estaban comentadas.
    // struct incorrectsecondview: view {
    //     ...
    // }
    // 
    // struct thirdview: view {
    //     ...
    // }
    

    ahora puedes ejecutar el proyecto y tu selector cambiará entre las diferentes vistas al deslizarse entre las etiquetas.

    “>imagen 2: https://i.stack.imgur.com/bo4xq.png {=”” index=”” in=”” text(viewtype(rawvalue:=”” index)?.description=”” “”)=”” }=”” }=”” .pickerstyle(segmentedpickerstyle())=”” activeview=”” }=”” }=”” ="" 5.="" quita="" los="" comentarios="" de="" las="" segundas="" y="" terceras="" vistas="" que="" previamente="" estaban="" comentadas.=""=”” struct=”” incorrectsecondview:=”” view=”” {=”” …=”” }=”” struct=”” thirdview:=”” view=”” {=”” …=”” }=”” “`=”” ahora=”” puedes=”” ejecutar=”” el=”” proyecto=”” y=”” tu=”” selector=”” cambiará=”” entre=”” las=”” diferentes=”” vistas=”” al=”” deslizarse=”” entre=”” las=”” etiquetas.=”” [imagen=”” 1]:=”” https://i.stack.imgur.com/6hkvo.png=“” [imagen=”” 2]:=””></viewtype.allcases.count) { index in
    text(viewtype(rawvalue: index)?.description ?? “”)
    }
    }
    .pickerstyle(segmentedpickerstyle())

        activeview
    }
    

    }


    5. quita los comentarios de las segundas y terceras vistas que previamente estaban comentadas.

    // struct incorrectsecondview: view {
    // …
    // }
    //
    // struct thirdview: view {
    // …
    // }
    “`

    ahora puedes ejecutar el proyecto y tu selector cambiará entre las diferentes vistas al deslizarse entre las etiquetas.

Comments are closed.