Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Encapsular e instanciar um botão feito programaticamente

Fiz um menu, ele funciona perfeitamente, mas preciso colocar um botão em todas as views para acessa-lo. É claro que não é muito inteligente copiar o mesmo código e colocar na ViewController de cada View. Até consegui colocar o código do botão dentro de uma classe e invoca-lo na view que quero, porém não consegui fazer com que o método que o botão deveria executar fosse chamado. Por favor, podem me ajudar e se possível me mostrar um exemplo disso na prática? Abaixo está o link para um print do meu código:

imagem do código

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // CRIA E EXIBE UM BOTÃO NA NavigationBar

        let img = UIImage(named: "Menu") as UIImage?

        let menuButton = UIBarButtonItem(image: img,
            style: UIBarButtonItemStyle.Plain,
            target: self,
            action: Selector("menuDidPress"))

        navigationItem.leftBarButtonItem = menuButton
    }


    func menuDidPress() {

        toggleSideMenuView()

    }

}
1 resposta
solução!

cara, pelo que entendi, vc nao consegue chamar o metodo? no caso aqui o "menuDidPress"?

se vc isolou a criação do botao numa classe, passa como argumento o nome do metodo

eu nao to no mac agora para testar, mas acho q seria +- assim

class MenuButton {
    let controller: UIViewController

    init  //construcao aqui

  func createOnTheLeft(funcName: String) {
        let img = UIImage(named: "Menu") as UIImage?
        let menuButton = UIBarButtonItem(image: img,
            style: UIBarButtonItemStyle.Plain,
            target: self,
            action: Selector(funcName))

        controller.navigationItem.leftBarButtonItem = menuButton
  }

}

nao sei se foi isso q vc ta procurando mas qq coisa posta ai, q a gente tenta denovo