ios - quitar - cual es el codigo de iphone
Cómo agregar un controlador de navegación mediante programación en código pero no como controlador de vista inicial (2)
Soy relativamente nuevo en iOS rápido y no puedo encontrar una respuesta o ayuda para mi problema que funciona. Quiero crear una vista de controlador de navegación cuando hago clic en un botón en mi vista anterior. Mi vista anterior es una incorporación con un botón en la última página. Conecté con éxito el botón a mi siguiente vista, pero no puedo hacer que la vista actúe como un controlador de navegación. Por ejemplo, cuando se muestra una barra de navegación, no puedo agregarle elementos de navegación.
Entonces mis preguntas son: ¿hay alguna manera de establecer la nueva vista que creo haciendo clic en mi botón en la primera vista para ser el controlador raíz de mi vista de navegación?
Una versión corta de mi código:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton(frame: CGRect(x: view.frame.width / 2, y: view.frame.height / 2, width: 40, height: 40))
button.backgroundColor = .red
button.tintColor = .white
button.setTitle("Test", for: .normal)
button.addTarget(self, action: #selector(change), for: .touchUpInside)
view.addSubview(button)
}
func change () {
let otherView = SecondViewController()
self.present(otherView, animated: true, completion: nil)
}
}
class SecondViewController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .yellow
}
}
El SecondViewController se muestra con una barra de navegación, pero tuve problemas para implementar elementos de navegación porque no se mostraban.
¿La segunda vista del controlador que presento debe ser de tipo UIViewController o UINavigationController?
Soy consciente de que hay maneras más fáciles de lograr mi objetivo con el uso del guión gráfico, pero en mi opinión lo entiendo mejor haciendo mis propias referencias a través del código en lugar de crearlas arrastrándolas fuera del guión gráfico.
editar: no tengo ningún objetivo-c de fondo y estoy aprendiendo rápido durante aproximadamente 4 semanas. Agradezco cualquier ayuda.
Puede agregar UINavigationController
como a continuación:
Primero debe crear el objeto de SecondViewController
,
let objVC: SecondViewController? = storyboard?.instantiateViewController(withIdentifier: "SecondViewController")
O
let objVC: SecondViewController? = SecondViewController(nibName: "SecondViewController", bundle: nil)
O
let objVC: SecondViewController? = SecondViewController()
A continuación, agregue Navigation a SecondViewController
let aObjNavi = UINavigationController(rootViewController: objVC!)
Si quieres presentarte, utiliza:
self.present(aObjNavi, animated: true) {
}
Si quieres presionar, usa:
self.navigationController?.pushViewController(aObjNavi, animated: true)
Si desea establecer como controlador raíz, utilice:
let appDelegate: AppDelegate = (UIApplication.shared.delegate as? AppDelegate)!
appDelegate.window?.rootViewController = aObjNavi
var objVC: UIViewController? = storyboard.instantiateViewController(withIdentifier: "ViewController")
var aObjNavi = UINavigationController(rootViewController: objVC)
Ahora, en lugar de usar el objeto del controlador de vista, use el objeto del controlador de navegación.