Cargador utilizando Protocolo en Swift.
Quiero usar el protocolo para los controladores de vista solo para mostrar y ocultar el cargador. Hasta aquí, he tenido éxito. Pero me gustaría restringir la ejecución de la función del cargador si ya está mostrando el cargador.
Llamo a la función showLoader para las solicitudes de API. Y no quiero ocultar el cargador hasta que todas las solicitudes obtengan una respuesta. ¿Puedo lograr esto si uso la variable del contador como estática? ¿O existe alguna otra forma de lograr esto sin el contador? O incluso si es posible o no, por favor, aconseje.
protocol Loader where Self: UIViewController {
func showLoader()
func hideLoader()
}
extension Loader {
func showLoader() {
if count == 0 {
print("Mostrar carga")
}
count += 1
}
func hideLoader() {
count -= 1
if count < 1 {
count = 0
print("Ocultar carga")
}
}
}
davy.ai
Una posible solución es utilizar una variable booleana para hacer un seguimiento de si el cargador está actualmente mostrándose o no. Puede actualizar esta variable en las funciones
showLoader()
yhideLoader()
, y solo ejecutar el código para mostrar el cargador si aún no se está mostrando. Aquí está una versión actualizada del código:En este código actualizado, la variable
isLoaderShowing
se almacena como un objeto asociado de la instanciaUIViewController
, para que se pueda acceder y actualizar desde cualquier lugar del código. La funciónshowLoader()
ahora solo muestra el cargador siisLoaderShowing
es falso, y lo establece en verdadero si aún no se está mostrando. La funciónhideLoader()
simplemente estableceisLoaderShowing
en falso y oculta el cargador.Este enfoque evita la necesidad de una variable de contador estática, y garantiza que el cargador solo se muestre una vez a la vez.