Exploración de protocolos y un uitableviewcontroller

La plantilla de aplicación Maestro-Detalle en Swift, y por lo tanto la Locatapp, utiliza una UITableViewController para mostrar la lista maestra de eventos. vistas de tabla son muy comunes en Cocoa Touch y, en el Mac, en el cacao. Una gran parte del trabajo está hecho para usted ya, y dos protocolos juegan un papel clave en la estructura.

vistas de tabla, tanto en OS X y iOS se integran muy bien con Core Data-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 el mundo real utiliza los protocolos y los delegados.

La plantilla de aplicación Maestro-Detalle contiene los protocolos que necesita. Ellos ya están configurados para usted en la plantilla, pero se debe examinar lo que tiene.

La arquitectura básica es que UITableViewController está diseñado para trabajar junto con dos protocolos: una fuente de datos (una clase que adopta la UITableViewDataSource) Y un delegado (una clase que adopta el UITableViewDelegate protocolo).

La fuente de datos proporciona la funcionalidad involucrada con la tabla y sus datos. Sus métodos necesarios especifican el número de filas y secciones en la tabla junto con sus títulos y sus métodos headers- también gestionan la edición de la estructura de la tabla (mover y eliminar filas).

Video: iOS UITableViewController in Swift 3 using Xcode 8

El protocolo de vista de tabla delegado maneja el aspecto de la tabla: indentaciones, altura de las filas, la selección, el contenido mesa de montaje (en oposición a la estructura que es manejado por el protocolo de origen de datos), y golpea en una célula, 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 las selecciones y la edición de contenidos.

Juntos, UITableViewController y sus protocolos (UITableViewDataSource y UITableViewDelegate) Proporcionar un potente conjunto de funcionalidades que le sea fácil de 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 único objeto grande.

Configuración de los delegados en el Interface Builder

Puede asignar una instancia de una clase a la delegar bienes en UITableView. Usted no tiene que preocuparse por eso porque en primer lugar, eso es un asunto marco / interfaz y este libro se centra en el lenguaje de Swift, y en segundo lugar, ya está hecho para usted en la mayor parte de las plantillas y ejemplos. He aquí una reseña de cómo se hace.

  1. Abierto Main.storyboard en Xcode usando Interface Builder (el editor por defecto para ese archivo).

  2. Abrir el esquema del documento si es necesario.

  3. Abrir Escena Maestro, el controlador maestro (círculo amarillo), y después Tabla.

    Habrá dos secciones Ambiente de maestro en el esquema del documento. Abrir 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 lista de la tabla. Desea que la imagen lista de la tabla.

    Cuando nos fijamos en el Ver Tabla en Main.storyboard usando el Interface Builder en Xcode y se muestra aquí, verá que las dos declaraciones mostrados anteriormente (delegar y fuente de datos) Se muestran como puntos de venta. Están conectados a la Dominar objeto en el esquema del documento en lugar de estar conectados en el código.

  4. Seleccione Maestro (el círculo amarillo).

    Como se puede ver, cuando se selecciona Dominar en el esquema del documento de Interface Builder, se puede ver el otro lado de la conexión: los dos puntos de referencia a (fuente de datos y delegar) Están conectados a Ver Tabla.

    Al realizar conexiones como estos en 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.

  5. Con el Maestro seleccionado, mirar el inspector de Identidad en el área de servicios públicos (que se muestra en la parte posterior derecha de la figura anterior).

    Video: UITableView with Swift Series Pt 1: Use Table View

    Como ves, Dominar es una instancia de MasterViewController. Se puede ver que lo resalta y mirando Ayuda rápida. Allí verá que MasterViewController es una subclase de UITableViewController.

  6. 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 consiguen en el código?

    La respuesta es que MasterViewController es una subclase de UITableViewController.

  7. Realce UITableViewController en la declaración se muestra abierta y Ayuda rápida.

    Allí se puede encontrar un enlace a su referencia.

  8. Si hace clic en la referencia a la documentación de referencia para UITableViewController.

    Vas a ver la documentación de UITableViewController como se muestra.

    Video: UITableViewController

    UITableViewController se ajusta a ambos UITableViewDataSource y para UITableViewDelegate. Esto significa que o subclases de él, debe ajustarse a los protocolos. (Realmente no importa si se trata de la clase original - UITableViewController en este caso - o una subclase como MasterViewController que conforma. Los métodos y las propiedades requeridas deben estar presentes cuando se genera el proyecto y ejecutarlo.

Artículos Relacionados