2011-11-06 21 views
9

Acabo de empezar a jugar con UISplitViewController. He improvisado algunos códigos de varios tutoriales, pero tengo problemas para ver cómo enviar datos desde el Master al Detail. Estoy creando un lector RSS solo para ilustrarme a mí mismo cómo debería funcionar. He analizado una fuente RSS y he llenado el MasterViewController con una UITableView, pero estoy atascado averiguando cómo hacer clic en una fila y cargar el artículo correspondiente en UIWebView en detailViewController. Cualquier consejo es apreciado.UISplitViewController Master/Detail communication

Respuesta

10

Un buen enfoque es utilizar delegados. Eso permite que una vista llame a una devolución de llamada proporcionada por la otra. En este caso, la vista de detalle se basa en el maestro existente, por lo que su devolución de llamada está bien. Evitaría dejarles tener referencias directas entre sí y leer los datos de los demás directamente.

What exactly does delegate do in xcode ios project?

Aquí hay un tutorial con UISplitViewController que hace precisamente eso (delegado entre maestro/detalle):

http://www.raywenderlich.com/1040/ipad-for-iphone-developers-101-uisplitview-tutorial

Específicamente esta sección:

Conexión de la izquierda Con la derecha

Es hora de jugar con la casamentera y enganchar estos dos lados juntos.

Hay muchas estrategias diferentes para la mejor forma de lograr . En la plantilla de aplicación Split View, dan al controlador de vista izquierda un puntero al controlador de vista derecho, y el controlador de vista izquierda establece una propiedad en el controlador de vista derecha cuando se selecciona una fila. El controlador de vista derecha anula la propiedad para actualizar la vista cuando se actualiza la propiedad . Eso funciona bien, pero vamos a seguir el enfoque sugerido aquí en la referencia de la clase UISplitViewController: use delegados . La idea básica es que vamos a definir un protocolo con un solo método - "selectedBotChanged". Nuestro lado derecho va a implementar este método, y nuestro lado izquierdo aceptará un delegado de alguien que quiera saber sobre esto .

Otro enfoque sería contar con un modelo compartido - algo así como un conjunto unitario con notificaciones para activar diferentes puntos de vista para actualizar a sí mismos, bien por los datos de la notificación o consultar el modelo de reacción a un modelo de cambios. Esto a veces es mejor en una aplicación con muchos puntos de vista que no dependen el uno del otro y simplemente generan datos de varias maneras (lo cual no es el caso aquí; la vista de detalles se basa en el maestro existente para que un delegado esté bien).

+0

Acabo de responder a esto en detalle en esta pregunta. http://stackoverflow.com/questions/33721081/swift-how-to-detect-if-uisplitviewcontroller-is- current-showing-1-or-2-contro/38547858#38547858 –

Cuestiones relacionadas