Init personalizado para UIViewController no Swift com configuração de interface no storyboard

Estou tendo problemas para escrever init personalizado para a subclasse de UIViewController, basicamente quero passar a dependência pelo método init para viewController em vez de definir propriedades diretamente comoviewControllerB.property = value

Então, criei um init personalizado para o meu viewController e chamei o init super designado

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

A interface do controlador de exibição reside no storyboard; também fiz a interface da classe personalizada como meu controlador de exibição. E o Swift precisa chamar esse método init, mesmo que você não esteja fazendo nada dentro desse método. Caso contrário, o compilador irá reclamar ...

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

O problema é quando tento chamar meu init personalizado comMyViewController(meme: meme) ele não inicia propriedades no meu viewController ...

Eu estava tentando depurar, encontrei no meu viewController,init(coder aDecoder: NSCoder) é chamado primeiro, então meu init personalizado é chamado mais tarde. No entanto, esses dois métodos init retornam diferentesself endereços de memória.

Estou suspeitando de algo errado com o init para o meu viewController, e ele sempre retornaráself com oinit?(coder aDecoder: NSCoder), que não possui implementação.

Alguém sabe como criar init personalizado para o seu viewController corretamente? Nota: a interface do meu viewController está configurada no storyboard

Aqui está o meu código 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)
    }

}

questionAnswers(6)

yourAnswerToTheQuestion