Crear Items de manera "Dinamica"

tengo poca experiencia usando stackViews, me imagino que con ayuda de estos se pueden crear ‘n’ numero de botones o textfields, alguien ha logrado algo así? que por ejemplo en un Api Get request recibieran un dato ‘x’ que les dijera la cantidad de botones que tendría ese stackView o la n cantidad de textfields… creo que seria algo así…

**func createButtons(button: [UIButton]) {
button.map { (button) -> UIView in
let button = UIButton(type: .system)
// algunas propiedades
return button
}
}
**

crear una clase algo así – class ButtonStackView: UIStackView { inicializarla y generar esa función etc }

o alguna idea mejor o por ahí va? digo lo he intentado y se crean los botones, pero por el momento no se me ocurre otra cosa :slight_smile:

Yo lo que usé fue un UITableviewController, recibia de una API un JSON con todos los fields que tendría una pantalla, por ejemplo; me mandaba un JSON con lo que llevaría una pnatalla de profile:

"profile": {
    "fields": [
        "firstName",
        "lastName",
        "gender",
        "usernName"
],
"firstName": {
            "label": "First Name",
            "placeholder": "First Name",
            "type": "text",
        },
"gender": {
            "type": "select",
            "label": "Gender",
            "options": [
                        {
                        "text": "Not Specified",
                        "value": "not specified"
                        },
                        {
                        "text": "Male",
                        "value": "male"
                        },
                        {
                        "text": "Female",
                        "value": "female"
                        }
                        ],
            "placeholder": "Gender",
        }
// Aquí seguirían los otros fields
}

Como esos campos de firstName, lastName, userName son de type = text los definía yo como TextFields y el de gender como era tipo select lo definia con un UIPickerView. Entonces ya con la llave type yo defínia que tipo de celda meter en una TableView.
if type == "text" voy a usar una custom Cell que yo creé que lleva un label y un cuadro de texto. Si type == "select" ah entonces voy a usar otra custom cell que tiene un UIPickerView dentro. Ya el estilo de la tableView y tamaño de las celdas, pues que lo maneje el TableViewDataSource y TableViewDelegate

1 me gusta

Hola @Yan

Existe un proyecto de Spotify https://github.com/spotify/HubFramework(ahora deprecado) donde básicamente construían la interfaz con base a respuestas de JSONs del server. Aquí la charla de https://www.youtube.com/watch?v=tx34mSe0nEw&t=1226s nuestro buen amigo Hector Zarate de los pocos mexicanos que están en Spotify junto con @ecamacho. Tal vez te pueda ayudar en lo que te encuentras elaborando.

Saludos!

1 me gusta