Estoy experimentando un comportamiento extraño con un botón que intento implementar en mi aplicación. Tengo un botón de 'redactar publicación' que estoy agregando a la ventana clave de la aplicación. Quiero crear el botón y ocultarlo en ciertos escenarios, como cuando el controlador de navegación presiona un nuevo controlador de vista (es decir, al hacer clic en una publicación). La aplicación está configurada así:
Main es un guión gráfico que es un UITabController personalizado de tipo MainTabViewController que tiene 4 pestañas, cada una de las cuales es un UINavigationController que tiene un contenedor que es de tipo BaseViewController .
En la función viewDidLoad de MainTabViewController , creo el botón de redacción y lo agrego a la ventana clave como una subvista como esta:
func createButton(){ let keyWindow = UIApplication.shared.keyWindow postButtonContainer = FanMenu... keyWindow?.addSubview(postButtonContainer) } Y en BaseViewController utilizo viewWillDisappear para ocultar el botón de redacción (es decir, cuando se hace clic en la publicación) y luego viewWillAppear para mostrar el botón de redacción configurando isHidden en verdadero o falso.
override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) ComposeButtonManager.shared.hidePostButton() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) ComposeButtonManager.shared.showPostButton() } El problema ocurre solo después de que cierro la aplicación después de iniciar desde Xcode. Lo que sucede es que cuando vuelvo a abrir después de un cierre fallido, la aplicación se cargará bien y presentará el botón de redacción, pero si navego desde una pestaña y luego vuelvo a esa misma pestaña, el botón de redacción no se muestra. Y si hago clic en una publicación y navego de regreso a la subclase BaseViewController , volverá a aparecer el botón. No estoy seguro de por qué el botón se oculta después de que cambia la barra de pestañas, cuando todos los UIViewControllers llaman para mostrar el botón cuando aparece su vista.
Cuando ejecuto el proyecto en mi teléfono desde Xcode, puedo cambiar de pestaña y el botón no desaparece, solo sucede después de cerrar y desconectarme de Xcode, no estoy seguro de por qué sucede esto.