Ocultar pantallas dentro de un CI

Hola, comunidad como están. Me contacto con Uds. a ver si alguien me puede dar una mano. El problema que tengo es el siguiente:
Tengo un CI con 15 pantallas que se usan para registrar distintos tipos de datos de alumnos de intercambio de la UNCUyo. Esta carga de datos genera una solicitud por cada alumno que posee un estado, este se va actualizando a medida que se van completando los datos.
En mi base de datos tengo una tabla que guarda la información de que pantalla tiene que estar visible dependiendo del estado de la solicitud.
Puse en el ini del CI una llamada a mi CN que posee un método que consulta a la base y oculta las pantallas, este es el for each que oculta:

foreach ($pantallas as $pa)
    {
      if (!$pa['visible'])
      $t->pantalla()->tab($pa['pantalla'])->mostrar();
      else
      $t->pantalla()->tab($pa['pantalla'])->ocultar();
    }

Donde $t es una referencia al controlado.
El tema es que, la primera vez que se llama a este método todo va ok, pero al hacer click en los tab de las pantallas que quedaron habilitadas me sale el siguiente error:
No es posible cambiar la pantalla a mostrar porque ya ha sido utilizada

Probé guardar una variable de sesión asi el método de ocultar era llamado una sola vez, pero, al hacer click en algún tab me des-oculta todo las pantallas que no se deberían ver.

Lei en el foro que usaban eliminar_tab lo probé y me da el mismo error.

Les acrecería alguna info adicional. Desde ya muchas gracias.

Ya pude solucionarlo, seguí viendo el foro y lei por ahi que para eliminar un formulario de una pantalla esto habia que hacerlo en el conf de la pantalla antes de que viaje al cliente. Entonces lo que hice fue mover la lógica desde el ini del CI al conf del CI y quedo andando de la siguiente manera.

conf del CI

this->cn()->manejo_interfaz($this->controlador(),  $this, $this->s__solicitud_in);

Método del CN

 static function manejo_interfaz($con, $t,$per)
  {
    //recupera el listado de pantallas con su estado para el tipo de solicitud que está en $per
    $pantallas = solicitud::get_pantalla_x_solicitud($per);
    foreach ($pantallas as $pa)
    {
     //visible tiene true o false dependiendo de si para ese perfil se debe ver o no
      if ($pa['visible'])
        $t->pantalla()->tab($pa['pantalla'])->mostrar();
      else
        $t->pantalla()->tab($pa['pantalla'])->ocultar();
    }
  }

y listo quedo andando. Saludos.