Uno de mis desemboca en las transiciones de un controlador de vista a un formato tableview controlador. Quiero pasar una matriz entre los dos, pero con un controlador de navegación antes de que el formato tableview controlador, que no puedo averiguar cómo pasar de la matriz. ¿Cómo pasar los datos a través de un navigatiom controlador a un formato tableview controlador?

InformationsquelleAutor user3142972 | 2014-08-18

6 Comentarios

  1. 120

    Reemplazar prepareForSegue y establecer cualquier valor en el formato tableview le gustaría. Usted puede agarrar el formato tableview de la UINavigation viewControllers propiedad.

    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!){
    
       let navVC = segue.destinationViewController as UINavigationController
    
       let tableVC = navVC.viewControllers.first as YourTableViewControllerClass
    
       tableVC.yourTableViewArray = localArrayValue   
    }

    Para Swift 3 :

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    
       let navVC = segue.destination as? UINavigationController
    
       let tableVC = navVC?.viewControllers.first as! YourTableViewControllerClass
    
       tableVC.yourTableViewArray = localArrayValue   
    }
    • En lugar de navVC.viewControllers.en primer lugar, usted puede hacer navVC.topViewController
    • lo que si es un controlador de vista acerca de la topViewController?
  2. 21

    @Tommy Devoy la respuesta es correcta, pero aquí es la misma cosa en swift 3

    Actualizado Swift 3

      //MARK: - Navigation
    
    //In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        //Get the new view controller using segue.destinationViewController.
        //Pass the selected object to the new view controller.
    
    
        if segue.identifier == "yourSegueIdentifier"  {
    
            if let navController = segue.destination as? UINavigationController {
    
                if let chidVC = navController.topViewController as? YourViewController {
                     //TODO: access here chid VC  like childVC.yourTableViewArray = localArrayValue 
    
    
                }
    
            }
    
        }
    
    }
  3. 10

    Estaba recibiendo este error a Horacio de la solución.

    ERROR: Value of type 'UINavigationController' has no member 'yourTableViewArray'

    Así que esto podría ayudar a otras personas como yo, buscando un code única solución. Yo quería redirigir a un controlador de Navegación, sin embargo, pasar los datos a raíz de controlador de vista dentro de ese Nav Controlador.

    if let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "yourNavigationControllerID") as? UINavigationController,
       let yourViewController = controller.viewControllers.first as? YourViewController {
            yourViewController.yourVariableName = "value"
            self.window?.rootViewController = controller  //if presented from AppDelegate
            //present(controller, animated: true, completion: nil) //if presented from ViewController
    }
    • Perfecto solución, sólo para aclarar, si la presentación de AppDelegate, el uso de auto.la ventana?…. y dejar // presente comentado, si la presentación de ViewController, el comentario // auto.ventana?… y elimine el presente(controlador de
    • sí, porque en la actualidad() requiere ViewController. No lo es! Pero ya ha pasado algún tiempo desde que estoy en contacto con este. Usted puede confirmar por el hecho de que las pruebas y, probablemente, dejar un comentario o sugerir edición de la respuesta. Voy a actualizar seguramente.
    • Sí, está bien, sí.ventana?.rootViewController = controlador si se presentan de AppDelegate y presente(controlador, animados: true, finalización: nil) si se presentan de ViewController, sólo tiene que elegir su caso y comentar el otro
    • actualizado comentario para presentar() declaración de
  4. 8

    De Tommy solución requiere para configurar la Aplicación en el Guión gráfico.

    Aquí está una única solución de código:

    func functionToPassAsAction() {
        var controller: UINavigationController
        controller = self.storyboard?.instantiateViewControllerWithIdentifier("NavigationVCIdentifierFromStoryboard") as! UINavigationController 
        controller.yourTableViewArray = localArrayValue
        self.presentViewController(controller, animated: true, completion: nil)
    }
    • ERROR: el Valor de tipo ‘UINavigationController’ no tiene ningún miembro ‘yourTableViewArray’ !! (El Uso De Swift3)
  5. 6

    SWIFT 3 (solución) – la transferencia de datos entre VC – Segue con NavigationController

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    
            let navigationContoller = segue.destination as! UINavigationController
    
            let receiverViewController = navigationContoller?.topViewController as ReceiverViewController
    
            receiverViewController.reveivedObject = sentObject 
        }
    • Muy bonito. TY TY
  6. 3

    Sintáxis para SWIFT 3

      override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            let navVC = segue.destination as! UINavigationController
            let tableVC = navVC.viewControllers.first as! YourTableViewControllerClass
    
            tableVC.yourTableViewArray = localArrayValue
        }

Dejar respuesta

Please enter your comment!
Please enter your name here