Variables de inicio para tu aplicación iOS – Swift (Settings)

Standard

 

Una de las opciones para almacenar las preferencias de usuario es utilizar “Settings Bundle”. Implementar Settings Bundle te permite manejar tus preferencias desde las configuraciones propias de la app.

En el siguiente tutorial les mostraré como crear una aplicación sencilla iOS que te permitirá cambiar el color de fondo según la preferencia del usuario.

Screen Shot 2016-06-13 at 6.28.27 PM

Para el tutorial estaré trabajando con Xcode Versión 7.2

Al final del tutorial podrás consultar una url de donde podrás descargar el proyecto.

Paso 1: Crear un nuevo proyecto.

  • File/New project/
  • Seleccionar Single View Application.

Screen Shot 2016-06-13 at 11.31.26 AM

  • Clic en Next.

Paso 2.  Ponle un nombre a tu proyecto.

  • Elige el nombre que tú desees. Yo le llamaré HunabsysBundleSettings.
  • Selecciona un dispositivo Universal.

Screen Shot 2016-06-13 at 11.41.03 AM

  • Clic en Next y después de seleccionar un directorio en Create.

Paso 3. Creación de “Settings Bundle “

Haz clic derecho sobre el group folder HunabsysBundleSettings y selecciona New File.

Selecciona la categoria Resources en la pantalla que se muestra.

Screen Shot 2016-06-13 at 11.46.50 AM

  • Selecciona Settings Bundle y haz clic en Next.
  • Se te dará opción de cambiar el nombre al Bundle Install, no es necesario cambiarlo. Puedes dar clic en Create.
  • Si extiendes el archivo Settings.bundle deberías ver ahora algo similar en el Project Navigator.

Screen Shot 2016-06-13 at 12.04.50 PM

Paso 4. El archivo Root.plis

  • Haz clic en el archivo Root.plist deberías ver una lista como la siguiente:

Screen Shot 2016-06-13 at 12.10.56 PM

  • Lo que nos interesa se encuentra dentro de la sublista Preference Items. Esta lista contiene datos dummy hasta el momento.
  • Como nosotros sólo queremos cambiar el color de nuestra aplicación, sólo necesitamos de un Item. Existen diferentes tipos de items que puedes utilizar para que sean configurables por el usuario.

Tipos de Items

Text Field Screen Shot 2016-06-13 at 1.58.06 PM
Title Screen Shot 2016-06-13 at 4.33.20 PM
Toggle switch Screen Shot 2016-06-13 at 4.35.24 PM
Slider Screen Shot 2016-06-13 at 4.48.01 PM
Group Screen Shot 2016-06-13 at 4.51.41 PM
Multivalue Screen Shot 2016-06-13 at 4.56.41 PM
Child Pane Screen Shot 2016-06-13 at 5.07.58 PM

Cada tipo de item tiene muchos atributos, puedes explorar algunos de ellos en los items de ejemplo.

Paso 5. Configurar nuestro Item – Color

  • Vamos a remover todos los items y dejar sólo uno. Utilizaremos el de tipo Multivalue, ya que queremos brindarle al usuario la opción de elegir entre cuatro colores de fondo: blanco, azul, cyan y gris.

Los atributos deben quedar de la siguiente forma:

Screen Shot 2016-06-13 at 5.29.53 PM

Paso 6. Personaliza Main.storyboard

Puedes agregar una imagen al Main Storyboard para darle más sabor al tutorial.

Screen Shot 2016-06-13 at 5.37.41 PM

Paso 7. Agrega un archivo swift al proyecto.

File/New File/Swift File y nombralo Colors.swift

Screen Shot 2016-06-13 at 5.41.41 PM

Debe contener lo siguiente:

import Foundation

import UIKit

struct Colors {

    static let white =  UIColor(red:255/255, green: 255/255, blue: 255/255, alpha: 1)

    static let blue =  UIColor(red:90/255, green: 164/255, blue: 230/255, alpha: 1)

    static let cyan =  UIColor(red:90/255, green: 230/255, blue: 337/255, alpha: 1)

    static let gray =  UIColor(red:204/255, green: 204/255, blue: 204/255, alpha: 1)

}

Paso 8. Adaptar ViewController.swift

Para cambiar el fondo de la app basándose en el valor especificado por el usuario es necesario tomar el valor de NSUserDefaults, esta clase provee una interfaz para interactuar con los valores defaults del sistema.

import UIKit

class ViewController: UIViewController {    

    var colors : [UIColor] = [Colors.white,Colors.blue,Colors.cyan,Colors.gray]

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        getLaunchedConstants()

    }

    

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    

    func getLaunchedConstants(){

        let defaults = NSUserDefaults.standardUserDefaults()

        let intIndex = defaults.integerForKey("color_id")

        self.view.backgroundColor = colors[intIndex]

    }

}

Paso 9. Ejecutar la aplicación.

Por default el color de fondo será blanco.

Screen Shot 2016-06-13 at 6.22.56 PM

Pero si presionas command+shift+H podrás acceder a home y de ahí a las configuraciones de la app y seleccionar otro color.

Screen Shot 2016-06-13 at 6.19.58 PM

Screen Shot 2016-06-13 at 6.21.25 PM

Ejecuta de nuevo la aplicación sin cerrar el simulador.

¡Sorpresa!

Screen Shot 2016-06-13 at 6.19.40 PM

Screen Shot 2016-06-13 at 6.24.57 PM

Screen Shot 2016-06-13 at 6.25.59 PM

Este es el aporte por hoy, saludos, espero te diviertas implementando otros diferentes tipos de elementos configurables por el usuario.

Para más información puedes consultar la documentación oficial Aquí.

Puedes descargar el proyecto Aquí.

Cualquier duda o comentario bienvenido.

Saludos.

KG

Leave a Reply

Your email address will not be published. Required fields are marked *