Curso Gratis para crear Apps con WatchKit

¿Quieres aprender a crear Apps para el Apple Watch Gratis?

Con este Curso Gratis para crear Apps con WatchKit , descubrirás cómo crear aplicaciones para el Apple Watch.

Durante varías semanas, iremos aprendiendo diferentes cosas sobre el proceso de crear Watch Apps.

Empezaremos por conocer el conjunto de clases que podemos usar.

Y claro, antes de poder usarlas, necesitamos conocerlas, saber que herramientas disponemos.

El Framework WatchKit

Para crear aplicaciones para el nuevo reloj de Apple hay que conocer su Framework.

¿No sabes que es un Framework?

Un Framework es un conjunto de clases, o lo que es lo mismo, un gran saco que contiene un montón de objetos que podremos usar.

Por ejemplo dentro del Framework UIKit estarían los botones, las etiquetas, las vistas, etc.

UIKit

UIButton – UILabel – UIViewController, etc.

Entonces dentro del Framework WatchKit estarán todos los objetos y Clases que necesitamos para crear nuestras Watch Apps 😉

Un Framework de 38mm

Sí, estamos hablando de un pequeño Framework que nos ayudará a crear grandes cosas, para una pequeña pantalla.

Desarrolladores y Desarrolladoras, con todos ustedes: el Framework WatchKit.

Curso-Gratis-para-crear-Apps-con-WatchKit

Hace unos días ya os hable de lo fundamental para estar al tanto de como crear Apps para el Apple Watch.

En esta entrada vamos a descubrir la clase WKInterfaceController, y sus métodos y propiedades más importantes.

Y claro, es muy fácil saber si alguna clase pertenece a este Framework, como Apple hace siempre, usa prefijos para identificar sus Frameworks, en este caso han puesto el prefijo WK.

¿Adivinas que significa?

Con Objective-C y con Swift

El Framework fue creado para ambos lenguajes, por lo que nunca debes asociar WatchKit con Swift.

Sin embargo para programar aplicaciones para el Apple Watch vamos a necesitar Xcode 6.2 o superior.

Es a partir de esta versión dónde vamos a encontrar la funcionalidad que nos permitirá crear las Apps para el reloj.

WKInterfaceController

Esta es la clase principal de la interfaz de nuestra aplicación.

Es el objeto que nos va a permitir usar controladores de vista, aunque en este caso Apple prefiere llamarlos: controladores de interfaces.

Entonces como hemos dicho, WKInterfaceController es un controlador de vista, en este caso de interfaz, es similar a UIViewController en UIKit.

Inicio

Cuándo se inicia una aplicación de WatchKit, el sistema carga la interfaz principal, y luego lanza la extensión de WatchKit.

¡¡¡Un momento!!! ¿Que extensión?

Bien, vamos a explicarlo.

La logica de la aplicación, es decir el código del controlador de interfaz, se ejecuta de forma local en el iPhone.

Cuándo algo cambia, es decir, si alguno de los valores de los objetos de la interfaz cambia, el sistema envía información al Apple Watch para realizar los cambios correspondientes en la interfaz.

Es decir, que tenemos dos paquetes separados, por un lado una aplicación WatchKit que ejecuta el Apple Watch, y por otro una extensión que estará en el iPhone y que gestiona la interacción del usuario y la lógica misma de la App.

Entonces cuándo carga la aplicación del reloj, se carga la interfaz principal y la extensión en el iPhone.

Inicializar los controladores

La extensión llamará a ciertas funciones que inicializarán nuestros controladores y los objetos que este contenga.

En estos métodos o funciones podremos inicializar clases o instancias asociadas con nuestro controlador.

Es decir, por medio de estos métodos podremos inicializar variables, datos de carga, o configurar los elementos de la interfaz.

Veamos estos métodos.

init

Se trata del inicializador designado.

Devuelve un objeto de controlador de interfaz inicializado.

awakeWithContext

Inicializa el controlador y además los objetos de contexto que estén dentro del mismo.

Esta función se llama en tiempo de inicialización, y nos permitirá inicializar el contexto de nuestra interfaz, aquí es dónde podemos configurar títulos de botones y etiquetas, datos de tablas, etc.

Eventos de Activación

¿Recordáis viewDidLoad? ¿O quizá viewWillAppear? o

Cuándo la interfaz está a punto de hacerse visible, el sistema llama al método willActivate.

willActivate

Este método nos permite saber cuándo la interfaz está a punto de hacerse visible.

Podemos usarlo para hacer actualizaciones a nuestro controlador y sus elementos.

No podemos usar este método para inicializar la interfaz, solamente lo usaremos para actualizar datos o hacer cambios.

didDeactivate

Se llama cuándo el controlador de interfaz no está en pantalla.

O lo que es lo mismo, cuándo el usuario bloquea el Watch.

Es la función que usaremos para realizar cualquier operación de limpieza con nuestros objetos.

Apple pone los ejemplos de invalidar temporizadores, o guardar información de estado relacionada con la aplicación.

Debemos tener en cuenta que deben ser tareas que terminen de forma rápida.

Navegar entre Controladores

En UIKit y cuándo creábamos aplicaciones para el iPhone o el iPad, teníamos las clases:

UINavigationController

UITabBarController

UIPageController

Y otras tantas más.

Pero ya hemos dicho que WatchKit es un Framework pequeño, que nos va a permitir hacer grandes cosas, para una pequeña pantalla.

Así que solamente contamos con 3 tipos de navegación entre controladores

Navegación Jerárquica

Las vistas se van apilando una encima de otra.

Es muy parecido a la clase UINavigationController de UIKit.

Debemos tener en cuenta que el primer controlador que llama a otro, será el rootViewController o controlador principal.

pushControllerWithName ( _:context: )

Usaremos este método para añadir un nuevo controlador de vista.

Se realizará una transición que presentará la nueva vista.

Este método requiere dos parámetros:

name

Se refiere al nombre del controlador que queramos mostrar.

Debemos poner este identificador en el Storyboard, dentro del inspector de atributos del controlador de vista.

context

Datos de contexto que queramos pasar a la nueva vista.

Este parámetro puede ser nil, aunque no se recomienda.

popcontroller

Con este método eliminamos la vista inmediatamente presentada y volvemos a la anterior.

popToRootViewController

Mediante este método volvemos a nuestro controlador principal o RootViewController.

De esta forma inicializamos nuestra pila de navegación a su controlador inicial.

Navegación mediante Ventanas Emergentes

Añadiremos vistas modales a las existentes.

presentControllerWithName ( _ name : String , context context : AnyObject ?)

Mediante este método presentaremos una sola vista modal.

Requiere dos parámetros:

name

Se refiere al nombre del controlador que queramos mostrar.

Debemos poner este identificador en el Storyboard, dentro del inspector de atributos del controlador de vista.

context

Datos de contexto que queramos pasar a la nueva vista.

Este parámetro puede ser nil, aunque no se recomienda.

Las vistas que presentemos de este modo, lo harán deslizándose de abajo hacía arriba.

presentControllerWithNames(_ names: [AnyObject], contexts contexts: [AnyObject]?)

Podemos presentar «grupos de vistas» que serán añadidas como un grupo de vistas paginadas.

Requiere dos parámetros:

names

Es un array de strings, dónde cada elemento será el nombre de un controlador de interfaz.

El orden de los controladores, será el orden del array.

contexts

Array de objetos de contexto, con los valores que queramos pasar al nuevo controlador de interfaz.

Este parámetro puede ser nil, aunque no se recomienda.

Quitar Vistas

Adivina como quitamos las vistas presentadas de forma modal.

¡Estás en lo cierto!

Con el método dismissController ()

Desde el Storyboard también podremos hacer este tipo de navegación, seleccionado transición modal, como ya hacíamos en UIKit.

Navegación por Páginas

Similar a la clase UIPageController en UIKIt, deslizando el dedo de forma horizontal, pasaremos de una vista a otra.

Lo haremos desde el storyboard, no podemos hacerlo en tiempo de ejecución.

Conectaremos un controlador con otro con la tecla «Control» pulsada, y crearemos una conexión «next page».

reloadRootControllersWithNames(_ names: [AnyObject], contexts contexts: [AnyObject]?)

Como te he dicho, no podemos crear controladores de interfaz en tiempo de ejecución si estamos usando un controlador de navegación por páginas.

Pero si podemos recargar todas y cada una de las páginas que tengamos dentro de nuestra paginación.

De forma que podemos configurar que páginas queremos mostrar, o cual queremos eliminar.

Requiere dos parámetros:

names

Array de strings, dónde cada elemento es el nombre de un controlador de interfaz.

El orden de los controladores, será el orden que demos en nuestro array.

contexts

Array de objetos de contexto, con los valores que queramos pasar al nuevo controlador de interfaz.

Este parámetro puede ser nil, aunque no se recomienda.

becomeCurrentPage()

A través de este método podemos hacer que un determinado controlador, se convierta en la página actual de una interfaz basada en páginas.

Veremos el uso de este método más adelante.

Segues

Por último comentarte que podemos usar segues para cambiar de una vista a otra en el Storyboard.

Tenemos una función similar a storyBoardWithSegue que es contextForSegueWithIdentifier, que requiere el identificador del controlador que va a ser llamado.

Opciones de Configuración del Controlador de Interfaz

En Interface Builder, es decir en nuestro storyboard, podemos configurar ciertos elementos de nuestro Controlador de Interfaz.

Esto lo haremos dentro del Inspector, en un apartado llamado «Inspector de Atributos» o más comúnmente conocido como «el escudito» 😉

A continuación puedes ver cada uno de estos atributos y su descripción.

Identifier

Se refiere al nombre de nuestro Controlador.

Esto es importante, pues por este nombre, por este identificador, es como vamos a llamar a esta vista desde nuestro código.

Title

El titulo de nuestro Controlador de Interfaz.

Podemos establecer este atributo mediante programación con el método setTitle: 

Is Initial Controller

Indica si este Controlador es el controlador de inicio.

Es decir, si será la primera vista que veremos cuándo arranque la App.

Hides When Loading

Oculta el contenido del controlador mientras se carga la interfaz.

El contenido será mostrado después de que se llame y sea devuelto el método willActivate.

Background

La imagen o el Fondo de nuestra interfaz.

Mode

El modo como presentaremos la imagen o nuestro fondo.

Animate

Si queremos que nuestra imagen de fondo se presente de forma animada.

Color

Color de fondo.

Insets

La cantidad espacio ( en puntos) que existirá entre los bordes del controlador y el contenido.

Podemos hacer una selección personalizada de los valores en la parte superior, inferior, y bordes izquierdo y derecho.

Spacing

Espacio ( en puntos ) que de forma adicional se incluirá para separar elementos de la interfaz.

Llegó la hora

Pues sí, llegó la hora de dejarlo por el momento.

En esta entrada hemos empezado a ver el Framework de WatchKit.

Sin duda nos esperan unas semanas apasionantes con este Curso Gratis para crear Apps con WatchKit

Dónde en cada entrada te enseñaré nuevas cosas para que puedas crear aplicaciones para el Apple Watch.

De momento empezamos a conocer el Framework, teoría que debemos saber, y quizá hasta memorizar.

Y después pasaremos a realizar ejemplos prácticos.

De esta forma dominarás esta materia, y podrás crear increíbles aplicaciones para el Apple Watch.

Y lo mejor de todo, de forma completamente gratuita.

About The Author
iOS Developer & Instructor at CFE Apps. Enseño a crear aplicaciones iOS a todo el que quiera aprender.

1 Comment

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.