Exploración de protocolos y un UITableViewController
El Maestro # 8208-Detalle plantilla Aplicación de Swift, y así el Locatapp, utiliza un UITableViewController
Conteúdo
Vistas de tabla, tanto en OS X y iOS se integran muy bien con Core Datos- la combinación se utiliza con frecuencia como lo es en Locatapp. Esta excursión en los marcos de ayuda para que se familiarice con los bienes # usos 8208 del mundo de los protocolos y los delegados.
El Maestro # 8208-Detalle plantilla de aplicación contiene los protocolos que usted necesita. Ellos ya están configurados para usted en la plantilla, pero se debe examinar lo que tienes.
La arquitectura básica es que UITableViewController está diseñado para trabajar junto con dos protocolos: una fuente de datos (una clase que adopta el UITableViewDataSource) Y un delegado (una clase que adopta el UITableViewDelegate protocolo).
La fuente de datos proporciona la funcionalidad involucrado con la mesa y sus datos. Sus métodos necesarios especifican el número de filas y secciones en la tabla junto con sus títulos y headers- sus métodos también gestionar la edición de la estructura de la tabla (mover y eliminar filas).
El protocolo de vista de tabla delegado maneja el aspecto de la tabla: muescas, altura de las filas, la selección, el contenido de la tabla de edición (en comparación con la estructura que se maneja por el protocolo de origen de datos), y se nutre en una celda, y la aparición de los contenidos de una célula.
En cuanto a la delegación y protocolos
El protocolo delegado proporciona la interfaz de usuario. Sus métodos de gestionar selecciones y la edición de contenidos.
Juntos, UITableViewController y sus protocolos (UITableViewDataSource y UITableViewDelegate) Proporcionan un poderoso conjunto de funcionalidad que es fácil para usted para usar y personalizar. Todo esto podría haber sido escrito como una clase gigantesca, pero dividiéndolo en una clase principal y dos protocolos, es más fácil de mantener (y, para muchas personas, más fácil de entender).
La puesta en práctica común en muchos ejemplos y plantillas Xcode básicamente vuelve a ensamblar la clase base y los protocolos en un solo objeto grande.
Configuración de los delegados en el Interface Builder
Puede asignar una instancia de una clase a la delegado propiedad en UITableView. Usted no tiene que preocuparse por eso, porque en primer lugar, que es un / issue marco de interfaz y este libro se centra en el lenguaje de Swift, y el segundo lugar, ya está hecho para usted en la mayoría de las plantillas y ejemplos. Aquí está una revisión de cómo se hace.
Abierto Main.storyboard en Xcode mediante Interface Builder (el editor por defecto para ese archivo).
Abra el documento de esquema si es necesario.
Abrir Escena Maestro, el controlador maestro (círculo amarillo), y luego Table View.
Habrá dos secciones Ambiente de Maestro en el esquema del documento. Abra cada uno y luego mirar el controlador maestro en el círculo amarillo. Uno tiene una flecha de navegación, y el otro tiene una imagen de la lista de tabla. Usted desea que la imagen lista de tablas.
Cuando nos fijamos en la Table View en Main.storyboard mediante Interface Builder en Xcode y se muestra aquí, verás que las dos declaraciones mostrados anteriormente (delegado y fuente de datos) Aparecen como puntos de venta. Están conectados a la Maestro objeto en el documento de esquema en lugar de estar conectados en el código.
Seleccione Maestro (círculo amarillo).
Como puede ver, cuando se selecciona Maestro en el documento resumen de Interface Builder, se puede ver el otro lado de la conexión: los dos puntos de referencia a (fuente de datos y delegado) Están conectados a Table View.
Al realizar las conexiones de este tipo en el Interface Builder, siempre se puede mirar desde ambos lados. Es esta conexión en la plantilla que asocia la vista de tabla con el Maestro.
Con Maestro seleccionada, mira el inspector de Identidad en el área de los servicios públicos (que se muestra en la parte posterior derecha de la figura anterior).
Como puedes ver, Maestro es una instancia de MasterViewController. Se puede ver que si lo resalta y mirando a la Ayuda rápida. Allí verás que MasterViewController es una subclase de UITableViewController.
Pase a ver MasterViewController.swift para ver su declaración en la plantilla (y, por lo tanto, en Locatapp).
No hay ninguna referencia a los protocolos. ¿Cómo se meten en el código?
La respuesta es que MasterViewController es una subclase de UITableViewController.
Punto culminante UITableViewController en la declaración se indica y abra la Ayuda rápida.
Allí se puede encontrar un enlace a su referencia.
Si hace clic en la referencia a la documentación de referencia para UITableViewController.
Vas a ver la documentación para UITableViewController como se muestra.
UITableView # 173-Controller se ajusta a ambos UITableViewDataSource y para UITableViewDelegate. Esto significa que o subclases de que debe cumplir con los protocolos. (Realmente no importa si se trata de la clase original - UITableViewController en este caso - o una subclase tales como MasterViewController que se ajusta. Los métodos y propiedades requeridas deben estar presentes cuando se genera el proyecto y ejecutarlo.