Quiero presentar un UIViewController mediante programación que debe mostrar (o no, más bien) con fondo transparente. Yo lo quiero para iOS 7.0 y superiores. He de encontrar a mí mismo muchas preguntas (y respuestas), pero no fueron capaces de ayudarme. Aquí es el punto de vista de la jerarquía de mi aplicación.

Estoy usando un menú lateral (controlador de RESideMenu).

Tengo un rootView (base de RESideMenu) -> Mostrando un Centro de controlador (junto con un controlador de vista) en UINavigationController.

En los requisitos, me gustaría presentar un controlador de vista de

De una inserción de vista controlador (en la navegación de la jerarquía)

De una presentados vista controlador (en la navegación de la jerarquía)

Además, tengo que presentar y realizar alguna acción, y luego retírela.

Estoy bastante seguro de que esto debería funcionar en muchos casos, con (o sin) menú lateral, o incluso la navegación de la controladora.

Voy a postear una pregunta aparte (y, por supuesto, su respuesta también) en esta cola, porque creo que me iba a ayudar a la comunidad de desarrolladores, quienes también podrían haber sido frustrados por la falta de una solución aceptable a este problema.

OriginalEl autor Hemang | 2014-12-22

1 Comentario

  1. 14

    Supongamos que estamos en FirstViewController

    //Obj-C
    - (void) presentSecondVC {
        SecondViewController *vc = [[SecondViewController alloc] init];
        [self addChildViewController:vc];
        [self didMoveToParentViewController:vc];
    }
    
    //Swift
    func presentSecondVC() {
        let vc = SecondViewController.init()
        self.addChildViewController(vc)
        self.didMove(toParentViewController: vc)
    }

    Algunos de ustedes deben escribir sobre el método como este,

    //Obj-C
    - (void) presentSecondVC {
        SecondViewController *vc = [[SecondViewController alloc] init];
        vc.view.frame = CGRectMake(0,0,width,height); //Your own CGRect
        [self.view addSubview:vc.view]; //If you don't want to show inside a specific view
        [self addChildViewController:vc];
        [self didMoveToParentViewController:vc];
        //for someone, may need to do this.
        //[self.navigationController addChildViewController:vc];
        //[self.navigationController didMoveToParentViewController:vc];   
    }
    
    //Swift
    func presentSecondVC() {
        let vc = SecondViewController.init()
        vc.view.frame = CGRect.init(x: 0, y: 0, width: width, height: height) //Your own CGRect
        self.view.addSubview(vc.view) //If you don't want to show inside a specific view.
        self.addChildViewController(vc)
        self.didMove(toParentViewController: vc)
        //for someone, may need to do this.
        //self.navigationController?.addChildViewController(vc)
        //self.navigationController?.didMove(toParentViewController: vc)
    }

    Ahora en SecondViewController cuando quieres volver

    //Obj-C
    - (void) goBack {
        [self removeFromParentViewController];
    }
    
    //Swift
    func goBack() {
        self.removeFromParentViewController()
    }

    Hacer jugar bien (con cada escenario) 🙂

    Y sí, esto no va a mostrar una animación, en mi caso, estoy mostrando una costumbre emergente dentro de vc pesar de que se ve bonito, con este código!

    A, Queridos Downvoters, por favor, trate de considerar para mantener su huella aquí con un comentario acerca de la razón de su voto. Sería realmente útil para aprender algo y mejorar mi auto. Puedo mantener mi respuesta aquí (como en mi pregunta) para ayudar a usted (y otros desarrolladores, puede ser). Sin embargo, si se ve mal o no funciona para usted, a continuación, siéntase libre de escribir su palabra (y si es posible, su solución también) junto con su desacuerdo a la votación. Yo seguramente te aprecia, gracias! 🙂
    El método goBack es incompleta, removeFromSuperView debe ser llamado. UIViewController Class Reference es para usted.
    Usted necesita agregar [auto.ver addSubview:vc.ver]; esta línea en ambos casos …. sólo addChildViewController va a hacer nada …
    La razón principal para la downvotes es su respuesta dice cómo agregar niño controlador de vista y no de cómo presentar un controlador de vista hay una gran diferencia entre ellos. developer.apple.com/library/content/featuredarticles/… para quien esté interesado leer manzanas docs
    gracias por la visita, esta pregunta se ha preguntado y respondido por mí un par de años atrás. Por favor, siéntase libre de editar pregunta detalles o mi respuesta es tener la imagen perfecta. Y sí, ATB para el Doovery! 🙂 P. S. yo ya no cuenta para el downvoters.

    OriginalEl autor Hemang

Dejar respuesta

Please enter your comment!
Please enter your name here