bottom bar ios objective-c uiviewcontroller cohesion

ios - bottom - status bar iphone



insertar controlador de vista mĂșltiple en una ventana (5)

Lo que yo haría es:

1) Crea clases personalizadas para cada vista.
2) Luego, configuraría View Classes para las clases que creé.

3) Luego escribiría el código para manejar cualquier funcionalidad que necesite dentro de estas clases de vista.

@interface PageContent : UIView - (void) showTest : (NSString *) textToShow; @end @implementation PageContent - (void) showTest : (NSString *) textToShow { //Then here you would do whatever you need to do with this text, and display it } @end @interface SoundPlayer : UIView - (void) playSound; @end @implementation SoundPlayer -(void) playSound { //Do whatever you need to do with the sound here. } @end

4) Luego cree puntos de venta para cada una de estas vistas en su clase de controlador de vista.

//So your View Controller Class would look something like this. @interface YourViewController : UIViewController @property (strong, nonatomic) IBOutlet Page *page; @property (strong, nonatomic) IBOutlet PageContent *pageContent; @property (strong, nonatomic) IBOutlet SoundPlayer *soundPlayer; @end

5) Luego, en la implementación de tu Controlador de Vista podrías hacer cosas como

@implementation YourViewController -(void) showContent { [self.pageContent showText:@"Text To Show"]; } -(void) playSound { [self.soundPlayer playSound]; } @end

Ahora cuando llame a estos métodos ([self showContent] o [self PlaySound]) en el controlador de visualización, llamará a los métodos para las vistas específicas, de modo que no tenga un controlador de vista extremadamente largo y no reutilizable.

Acabo de mostrar ejemplos de una vista, espero que pueda ver lo que estoy haciendo aquí, e implementar esto para todo lo que necesita.

Quiero tener una Vista que contenga más de una vista. mira la imagen de abajo:

como usted ve, pageController controla la navegación de la página y proporciona una vista previa y posterior de ViewController (página).

pageContentController muestra texto y lo procesa.

soundPlayer logra reproducir el sonido relacionado

Puedo tenerlos todos en un solo controlador, pero mi controlador debe hacer muchas tareas y administrarlo será una tarea difícil. ya que desobedece el controlador de vista de luz. y disminuir su cohesión así que quería saber cómo puedo lograr esto por favor explique en detalles.


Para su vista de pageController, agregue la vista de pageContentController y la vista de SoundPlayer como subvista.

escriba el código a continuación en el archivo pageController.m

soundPlayer = [[SoundPlayer alloc] init]; [self.view addSubview:soundPlayer.view]; souldPlayer.frame = //set it value as desired.

Del mismo modo el pageContentController.


gracias por sus respuestas detalladas. tus respuestas me aclararon lo que hice:

SoundPalyerVC como hijo de PageContentVC

SoundPlayerVC *soundPlayer = [[StoryViewController alloc] initWithStory:self.storyManagedObject]; [self addChildViewController:soundPlayer]; [self.view addSubview:soundPlayer.view]; [soundPlayer didMoveToParentViewController:self]; soundPlayer.view.frame = CGRectMake(0, self.view.frame.size.height-soundPlayer.view.frame.size.height, 320, soundPlayer.view.frame.size.height);

eso fue tan fácil. ahora mis códigos están separados.


A partir de iOS 5, Apple agregó el soporte del controlador de vista padre / hijo al sistema operativo. Hay nuevas llamadas en la clase UIViewController para admitir la configuración de las relaciones del controlador de vista padre / hijo, donde un controlador de vista (el padre) configura o más otros controladores de vista para que sus vistas de contenido se inserten en la jerarquía de vista del padre. Esta fue una mejora importante, pero una buena cantidad de trabajo para configurar correctamente y hacer que todo funcione bien.

A partir de iOS 6, Apple agregó vistas de contenedores (que es solo una UIView con un tipo especial) e incrusta los segmentos. Lo que hace es abrir la escena del controlador de visualización que será el elemento principal en IB, seleccionar la lista de objetos de interfaz y escribir "contenedor". Deberías ver una vista de contenedor. Arrastre una vista de contenedor a su controlador de vista principal y colóquelo donde lo desee.

A continuación, controle y arrastre desde la vista de contenedor a la escena que define la interfaz del controlador de vista secundario que desea colocar en ese contenedor. Debería establecerse por defecto para crear una transición de inserción. Acepta el predeterminado. Eso es practicamente todo. Ahora, cuando cargue el controlador de vista principal, el sistema también instanciará cualquier controlador de vista hijo que haya configurado y conectará todas las "tuberías" que lo hacen funcionar correctamente.

Si necesita que el padre y el hijo se comuniquen, puede establecer un identificador en su transición de inserción y luego escribir el código prepareForSegue que configura el elemento secundario, al igual que cualquier otra secuencia.

Las vistas de contenedor y los segmentos de inserción son MARAVILLOSOS, y hacen que configurar este tipo de cosas sea realmente fácil.

Tengo un proyecto de muestra en github que utiliza incrustar incidencias con buenos resultados. Aquí está el enlace:

Proyecto de demostración que utiliza incrustar incrustaciones para administrar 2 vistas de tabla estáticas en un VC principal.


Me daría cuenta de eso con el objeto contenedor de vista a través del constructor de interfaz. de la descripción: "Vista de contenedor define una región dentro del subgrafo de vista de un controlador de vista que puede incluir un controlador de vista hijo. Crea un paso de inserción desde la vista de contenedor al controlador de vista hijo en el guión gráfico".

De esta forma definiría exactamente las dos regiones que desea como controlador de visualización hijo en su controlador de vista padre y podría cargar en su página Contenido un UIPageViewController y en su reproductor de sonido su controlador de jugador.