Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Erro #selector ao criar botão programaticamente

Crio um UIBarButtonItem programaticamente conforme código abaixo o compilador apresenta o erro "Argument of '#selector' refers to instance method 'showNewItem()' that is not exposed to Objective-C".

override func viewDidLoad() {
        let newItemButton = UIBarButtonItem(title: "new item",
            style: UIBarButtonItem.Style.plain, target: self,
            action: #selector(showNewItem))
        navigationItem.rightBarButtonItem = newItemButton
    }

    func showNewItem() {
        print("new item...")
    }

Acredito que o problema seja porque estou usando uma versão do swift superior ao mostrada no curso.

Estou usando swift 5, mas só consigo mudar até o 4. E o curso parece que é na 3.2 E estou usando xcode 10.3

Sobre o erro que aparece, o proprio xcode recomenda fazer isso? Seria certo?

@objc func showNewItem() {
        print("new item...")
    }
1 resposta

Oi Hellen, tudo bem?

Exato, quando precisamos chamar funções que vem de objective c, no caso utilizando o selector, precisamos colocar a keyword objc antes da declaração da função.

Abs.