Comenzamos con la utilización de Xcode 6 y el flamante lenguaje Swift, en un sencillo Hola Mundo que os hará perder el miedo por completo.
Introducción
Como ya vimos en el artículo sobre las novedades de Xcode 6, una de las más importantes es la posibilidad de utilizar el lenguaje Swift como lenguaje de programación.
Pero, ¿supone esto que tengamos que volver a aprender a hacer apps desde cero? La respuesta bajo mi opinión es NO.
Como vamos a ver en este artículo la mayoría de cosas que hacíamos anteriormente para hacer una app siguen siendo exactamente iguales. De hecho cuando mas adelante hagamos uso de frameworks de Apple de iOS 8 y anteriores, veréis que una vez aprendida la sintaxis de Swift, todo nos va a parecer exactamente igual. Llegará un momento en que no os daréis cuenta de que ya estas haciendo lo mismo que ya sabíais hacer, pero con Swift.
Playgrounds
Otra novedad que trae Xcode 6 y que es en exclusiva para código Swift, son los playgrounds. Los playgrounds nos permiten probar código fácilmente sin movernos de la app en que nos encontremos y sin la necesidad de andar ensuciando el código de nuestra app.
Imaginemos que necesitamos probar una serie de efectos que queremos aplicar en nuestra app a una foto utilizando Core Image. Pues bien, podemos añadir un nuevo fichero a nuestro proyecto, de tipo Playgrounds, y allí probar las rutinas de efectos que necesitemos. Una vez que tenemos el efecto deseado, podemos copiar el código y llevarlo a aquel lugar en nuestra app donde es necesario.
Un sencillo Hola Mundo!
Bueno, vamos a dejar de hablar tanto de la teoría y vamos a hacer un poco de práctica.
En este primer ejemplo con Xcode 6 y Swift vamos a hacer algo tan sencillo como una app que tenga una caja de texto y un botón, y que al pulsar el botón se muestre el texto de la caja de texto en una alerta. No es gran cosa, pero va a servir para que os quitéis el miedo antes de embarcarnos en algo mas complejo, o en aprovechar los nuevos frameworks de iOS 8.
Vamos a crear un nuevo proyecto en Xcode 6 de tipo Single View Application:
Y a continuación lo vamos a llamar HolaMundoSwift y muy importante, vamos a elegir como lenguaje de programación, Swift.
Una vez hecho esto, veréis que nos encontramos ante un proyecto normal de Xcode, aunque algunas cosas han cambiado en nuestro Explorador de archivos:
Por defecto Xcode 6 nos esta creando lo siguientes archivos:
- AppDelegate.swift
- ViewController.swift
- Main.storyboard
- Images.assets
- LaunchScreen.xib
Ahora con Swift, ya no tenemos ficheros de cabecera e implementación, es por este motivo que para clases como AppDelegate o ViewController únicamente encontremos un fichero, con extensión .swift.
Otra de las novedades es la existencia del archivo LaunchScreen.xib. Este archivo nos va a permitir definir qué es lo que se verá en pantalla en lo que la app carga, como sabéis algo que dura unos breves instantes. Algunos deciden poner una imagen, otros deciden poner una replica exacta de la interfaz, una Table View por ejemplo, pero completamente vacía. Pues bien, ahora podemos hacer todo esto dentro de ese archivo, y es algo que podemos configurar en nuestro Target en el apartado Launch Screen File.
Vamos a empezar con la interfaz de usuario de nuestra app, que va a ser bien sencilla. Si pulsamos sobre el Storyboard de nuestra app, la primera sorpresa que nos llevaremos es ver que nuestro View Controller es cuadrado y no rectangular. ¿Será para el Apple Watch? No, es la forma que tiene Xcode de indicarnos que estamos utilizando Adaptive Layouts, que es algo que abordaremos largo y tendido en futuros artículos.
Si queremos que todo vuelva a la normalidad basta con pulsar en el menu inferior w Any h Any y seleccionar el factor de forma correspondiente al iPhone.
Si movemos el ratón viendo las diferentes configuraciones que nos ofrece Xcode 6, veremos una breve descripción de para qué dispositivos esta preparada cada configuración.
Bien, ya tenemos nuestro canvas para crear el interfaz de nuestra app.
Vamos a crear, como decíamos al principio, un interfaz muy sencillo, compuesto por un UILabel
, un UITextField
y un UIButton
.
Ahora, tal y como haríamos hasta ahora, vamos a crear un IBOutlet para la caja de texto, con el objetivo de poder modificar su valor, y un IBAction para el botón para poder establecer la lógica que se ejecutará cuando se pulse. Para ambas cosas, abriremos como siempre el Assistant Editor de Xcode y nos aseguraremos de que estamos viendo en un lado nuestra interfaz de usuario y al lado el código fuente de ViewController.swift. Ahora, haremos clic con la tecla Ctrl pulsada arrastraremos desde el componente en cuestión hasta el código hasta el código.
Esto nos creará el siguiente código por nosotros (ya vinculado con el interfaz de usuario):
1 2 3 4 5 6 7 |
@IBOutlet weak var cajaTexto: UITextField! @IBAction func mostrarMensaje(sender: AnyObject) { } |
Como veis se hace uso de Optionals de Swift para la declaración de Outlets y del tipo AnyObject
para la recepción genérica del parámetro sender.
Vamos ahora a crear la lógica que se ejecutará dentro del método mostrarMensaje:
1 2 3 4 5 6 7 8 9 10 11 12 |
// Declaramos la alerta, que con iOS 8 se hace a través // de la clase UIAlertController tanto para UIAlertView // como para UIActionSheet var alert = UIAlertController( title: "Alerta", message: "El usuario ha introducido el mensaje: \(cajaTexto.text)", preferredStyle: UIAlertControllerStyle.Alert) // Mostramos la alerta en pantalla de forma animada self.presentViewController(alert, animated: true, completion: nil) |
En iOS 8, las alertas sencillas de tipo UIAlertView
se muestran utilizando la clase UIAlertController
, que ahora nos va a permitir de una forma mas sencilla, definir por ejemplo las acciones que se producen al pulsar los diferentes botones que pueda tener nuestro UIAlertView
o nuestro UIActionSheet
.
Pues nada, ejecutamos nuestra app, y si rellenamos el texto «Hola!» en nuestra caja de texto y pulsamos el botón «Mostrar mensaje» deberemos ver lo siguiente:
Como veis, el 90% de las acciones que hemos realizado para crear este sencillo ejemplo, no han variado en absoluto con Xcode 6 y Swift.
Esperamos que os haya gustado el artículo y ¡nos vemos en el siguiente!
¿Aún te pierdes con Swift?
Si realmente hemos dado el paso y aprendido el lenguaje Swift, cuya curva de aprendizaje es mucho menos pronunciada que la de Objective-C, veréis que hacer lo mismo que antes hacíamos con Objective-C es muy sencillo.
Si todavía no te has puesto las pilas en Swift, os recordamos que tenéis solo por visitar el blog un 10% de descuento en nuestro curso Swift en español en la siguiente dirección:
https://www.udemy.com/swift-en-espanol/?couponCode=MIGUELDIAZRUBIO10
¡Aprovéchalo ya!
That’s not just logic. That’s really sensible.
along with the celestial satellite reversal kept kept amused your kids for pretty much whole time. The notice is at a
adidas yeezy 350 sneakers http://www.adidasyeezy350boost.com/yeezy-boost-350-c-4/
his or her legal process of law intended for boot styles. Madame de Pompadour prominent runners that had been dubbed
cheap curry shoes http://www.chemcleantt.com/curry/us_Stephen-Curry-Shoes-2014-Under-Armour.asp
Without a doubt read more information on rewards applying this style of shoes,
burberry shirts cheap http://www.giftsstlouis.com/pshirt/us_burberry-polo-shirt-xxl.asp
should stay away from buying from such sites.
ua curry one http://www.1800marbleguy.com/curry/2015_Stephen-Curry-Shoes-Philippines.asp
Disculpa, estoy desarrollando una app para IOS la cual requiere un menú lateral (como el de facebook); el problema es que no encuentro un tutorial claro, ya que todos los que hay hacen uso de diferentes técnicas y a la hora de tratar de adaptar el ejemplo a mi proyecto resulta que no son digamoslo «compatibles» a la hora de codificar, ya que en los tutoriales lo hacen de una manera y yo de otra. He encontrado una forma de hacerlo, es mediante los UISplitViewControllers, mas me pasa lo mismo que en los casos anteriores. Te agradecería mucho que me pudieces ayudar, ya que llevo mucho tiempo tratando de encontrar un ejemplo o tutorial claro. Gracias
Disculpa, estoy desarrollando una app en lenguaje Swift, pero no sé como manejar la transición de las escenas en el storyboard con código o siquiera sé si esto es posible, otro ejemplo sería enviar datos de una escena a otra. Sería de mucha ayuda que me guiaras para resolver mis dudas. Gracias
Hola Miguel, fantástica tu página la sigo desde que me dedico a esto de programar jejejeje. Tengo varios problemas con el Xcode 6, y es que el autocompletar de le propio editor no va muchas veces, y algunas veces se cuelga el Xcode quitando todo los colores y referencias, te ha ocurrido?, existe alguna solución?
He desinstaladlo TODO y vuelto a instalar e igual.
Saludos y renuevo enhorabuena.
Hola Carmelo, pues la verdad me gustaría decirte lo contrario, pero si, a mi también me pasa. Concretamente con swift el auto completado funciona fatal. Esperaba que Xcode 6.1 mejorara todo esto radicalmente pero me temo que habrá que esperar un poco mas.
Gracias por tu comentario!
Hola Miguel, si eso ya lo hice me vino la inspiración por decir algo y me fui como si fuese un iPhone real a General -> Ajustes y allí en idioma, teclado y región lo cambie a español (teclado físico en español-iso) hay todo bien lo guardo vuelvo para atrás y me quedo en la pestaña General con todas sus opciones y ya no puedo volver a los iconos virtuales del simulador, vamos no se como hacerlo, mira que lo he intentado con el ratón…etc pera nada. Cuando he echo los cambios si que me salía un submenu que decía que iba a realizar los cambios pero me he quedado enganchado hay en general. Fíjate tecleo ñ y me sale otro símbolo y es porque esta en idioma ingles. Mira que he estado buscando por hay pero nada……Por eso te lo pregunto a ti, pero no quiero ser pesado con este tema.
Saludos.
Hola de nuevo Miguel, ya se que no es una app funcional pero quería hacer está practica o ejemplo. Ahora mismo tengo el simulador abierto y no encuentro ajustes para poder ponerlo en español, ¿me puedes decir en que pestaña elijo para encontrar ajustes, o mejor dicho decirme que pasos tengo que seguir?.
Saludos.
Hola Pablo,
La configuración del idioma del simulador se modifica igual que si se tratase de un dispositivo real, es decir desde la app Ajustes (settings) que tiene instalada. Cuando lo cambies te pedirá reiniciar el simulador.
Espero haberte ayudado.
Un saludo
Hola Miguel, he echo esta practica pero cuando hay dos cuestiones que te quiero preguntar:
– Cuando se esta introduciendo un texto cualquiera el castellano no lo coge, solamente ingles (si pongo «Atención…….» ya no me deja poner el acento, ¿hay alguna manera para que el simulador coja el castellano también?.
– Como te había dicho podía introducir un texto cualquiera por el teclado que aparece en el simulador o directamente, lo que pasa es que le di a la barra espaciadora y se oculto el teclado ¿como lo recupero?.
Saludos.
Hola Pablo,
– El simulador por defecto esta en inglés, por eso te sale el autocompletar en inglés aun escribiendo en castellano. Lo puedes cambiar en ajustes del Simulador.
– Si desaparece el teclado solo tienes que pulsar fuera de la caja de texto y luego de nuevo dentro de la caja de texto.
Hay que tener en cuenta que es un ejemplo, no pretender ser una app funcional.
Un saludo.