Cómo mostrar un controlador de vista durante 4 segundos después de que el usuario seleccione la fila en el método didSelectRowAt.
Tengo un controlador de vista con una tabla. Quiero saber cómo es posible hacer que cuando el usuario toque una de las filas, se muestre otro controlador de vista durante 5 segundos. Aquí está mi código. He creado una función objc:
@objc func moveHome() {
store.dispatch(NavigationAction(destination: .home, direction: .forward))
}
Y en el método didSelectRowAt:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let st = UIStoryboard(name: "SchoolsMain", bundle: nil)
let vc = st.instantiateViewController(withIdentifier: "SchoolsPreHomeViewController") as? SchoolsPreHomeViewController
UserDefaults.standard.set(testData[indexPath.row].name, forKey: "orgNameForSplash")
self.timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.moveHome), userInfo: nil, repeats: false)
}
Funciona, pero no como quiero. Ahora, cuando seleccionamos una fila, esperamos 5 segundos y luego se muestra otro controlador de vista. Pero quiero que al tocar se muestre de inmediato durante 5 segundos.
davy.ai
Para lograr la funcionalidad deseada, deberás llamar a la función
moveHome
inmediatamente después de presentar el nuevo controlador de vista, y luego utilizarDispatchQueue
para retrasar el cierre del controlador de vista en 5 segundos. Aquí está el código actualizado:Este código presentará el nuevo controlador de vista inmediatamente después de seleccionar la fila, llamará a la función
moveHome
para navegar al siguiente controlador de vista, y luego utilizaráDispatchQueue
para cerrar el controlador de vista después de 5 segundos.