Init personalizado para UIViewController en Swift con configuración de interfaz en storyboard

Tengo problemas para escribir init personalizado para la subclase de UIViewController, básicamente quiero pasar la dependencia a través del método init para viewController en lugar de establecer la propiedad directamente comoviewControllerB.property = value

Así que hice un init personalizado para mi viewController y llamé a init super designado

init(meme: Meme?) {
        self.meme = meme
        super.init(nibName: nil, bundle: nil)
    }

La interfaz del controlador de vista reside en el guión gráfico, también hice que la interfaz para la clase personalizada sea mi controlador de vista. Y Swift requiere llamar a este método init incluso si no está haciendo nada dentro de este método. De lo contrario, el compilador se quejará ...

required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

El problema es cuando intento llamar a mi init personalizado conMyViewController(meme: meme) no inicia propiedades en mi viewController en absoluto ...

Estaba tratando de depurar, encontré en mi viewController,init(coder aDecoder: NSCoder) primero se llama, luego mi init personalizado se llama más tarde. Sin embargo, estos dos métodos init devuelven diferentesself Direcciones de memoria.

Sospecho que algo está mal con el init para mi viewController, y siempre volveráself con elinit?(coder aDecoder: NSCoder), que no tiene implementación.

¿Alguien sabe cómo hacer un init personalizado para su viewController correctamente? Nota: la interfaz de mi viewController está configurada en el guión gráfico

Aquí está mi código de viewController:

class MemeDetailVC : UIViewController {

    var meme : Meme!

    @IBOutlet weak var editedImage: UIImageView!

    // TODO: incorrect init
    init(meme: Meme?) {
        self.meme = meme
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func viewDidLoad() {
        /// setup nav title
        title = "Detail Meme"

        super.viewDidLoad()
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        editedImage = UIImageView(image: meme.editedImage)
    }

}

Respuestas a la pregunta(6)

Su respuesta a la pregunta