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

'instantiateViewController(identifier:creator:)' is only available in iOS 13.0 or newer

Enquanto seguia a aula nessa parte, vi esse erro no xCode: 'instantiateViewController(identifier:creator:)' is only available in iOS 13.0 or newer"

Qual seria melhor forma de corrigir isso? 1 - utilizando o antigo (withIdentifier:) no lugar de (Identifier:)

instantiateViewController(withIdentifier: "Mapa")

2 - usando o antigo e o novo, verificando a versão antes de utilizar o método? (o que torna todo o código bem menos "direto ao ponto")

    var mapa: MapaViewController?
    if #available(iOS 13.0, *) {
         mapa = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "Mapa") as? MapaViewController
    } else {
        mapa = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Mapa") as? MapaViewController
    }
    if let mapaVC = mapa {
        self.navigationController?.pushViewController(mapaVC, animated: true)
    }

Talvez seja uma pergunta meio detalhista demais mas fiquei com essa dúvida :)

1 resposta
solução!

Oi Júlia, não há problemas em usar diretamente a forma antiga:

instantiateViewController(withIdentifier: "Mapa")

O que acontece nessa situação é que a partir do iOS 13.0, houve uma modificação na assinatura do método instantiateViewController(identifier:creator:), porém você não precisa necessariamente usar esse novo método. Como há retrocompatibilidade, as versões novas do iOS são obrigadas a manter os métodos antigos funcionando por um bom tempo (mesmo aqueles com o alerta de obsoletos).

Essa estratégia do if #available(iOS 13.0, *) é interessante quando há uma lógica diferente a ser feita para versões diferentes do iOS. Digamos que agora fosse necessário chamar dois métodos em vez de um só. Aí faríamos essa diferenciação por meio desse if.