¿De qué manera puedo recargar completamente un UITableViewController?

El hecho de que su controlador de vista de detalle sea un controlador de vista de tabla no importa, esto se puede aplicar a cualquier relación maestro / detalle. Realmente me confundió un poco b / c recargar una tabla es bastante fácil (reloadData: método de la vista de tabla) pero ese no es realmente tu problema:

Creo que lo principal es que debe pensar en su controlador de vista de detalles como un controlador de vista que muestra detalles de cualquier objeto de dominio, no de un objeto de dominio en particular. Eso debería hacerte olvidar la idea de empujar un tercer controlador de Vista a la pila, que no encajaría aquí en absoluto.

Si aún no lo ha hecho, cree un protocolo llamado DetailViewControllerDelegate y una propiedad para una instancia de uno en la clase DetailViewController. Haga que su controlador de vista maestro implemente este delegado, y cuando el controlador de vista maestro presente el DetailViewController haga que el controlador de vista maestro se configure como el delegado del controlador de detalle. Si necesita más información sobre esto, lea un poco sobre los documentos de Apple, tienen muchos ejemplos.

El protocolo debe tener un método llamado algo así como detailsViewController: advancedToNext: en el que el segundo argumento es algún tipo de indicador (booleano o enumeración) para indicar si el usuario tocó “anterior” o “siguiente”. Cuando el usuario toca el botón, DetailsViewController debe enviar este mensaje a su delegado.

Como ese delegado es el maestro, ya tiene una lista de todos los objetos de dominio que se ven actualmente. Entonces, en la implementación del maestro de detailsViewController: advancedToNext :, haces algo como detailsViewController.domainObject = domainObjects [currentIndex +/- 1]. Luego, anule el configurador domainObject en DetailsController para que actualice la IU.

Todo lo que necesita hacer es actualizar la matriz (o cualquier estructura de datos que esté utilizando para guardar el contenido) con el nuevo contenido (contenido de correo electrónico siguiente o anterior dependiendo de la acción del botón). Una vez que haya terminado de actualizar el contenido, solo tiene que volver a cargar la vista de tabla usando [tableviewName
reloadData].

Lo que hace el método “reloadData” es llamar a todos los métodos delegados de TableView, por lo que buscaría el nuevo contenido en el botón (siguiente y anterior en su caso) haga clic.

PD Vuelva a cargar la vista de tabla solo cuando haya terminado de actualizar el contenido que contiene la matriz.