Problema ao validar form com codeigniter

Eu criei a seguinte classe para validar meus formulários:

<?php 

Class validaform{

    protected $CI;

    function __construct(){
        $this->CI =& get_instance();
    }

    public function criaConta(){
        $this->CI->form_validation->set_rules("nome", "Nome", "required");
        $this->CI->form_validation->set_rules("email", "Email", "required|valid_email|callback_email_em_uso");
        $this->CI->form_validation->set_rules("confirm-email", "Confirmar Email", "required|valid_email|matches[email]");
        $this->CI->form_validation->set_rules("senha", "Senha", "required");
        $this->CI->form_validation->set_rules("confirm-senha", "Comfirmar Senha", "required|matches[senha]");
        $this->CI->form_validation->set_error_delimiters("<b style='color: red'>  (", ")</b>");
        return $this->CI->form_validation->run();
    }

    public function login($dadosLogin){
        $this->CI->form_validation->set_rules("email", "Email", "required|valid_email");
        $this->CI->form_validation->set_rules("senha", "Senha", "required");
        $dadosForamInseridos = $this->CI->form_validation->run();
        $usuarioEhValido = $this->CI->UsuarioDao->buscaUsuario($dadosLogin); 
        if($dadosForamInseridos && $usuarioEhValido) return true;
        return false;
    }

    public function novaCategoria(){
        $this->CI->form_validation->set_rules("nome", " ", "required|callback_categoria_ja_existe");
        $this->CI->form_validation->set_rules("usuario_id", "Id usuario", "required|numeric");
        $this->CI->form_validation->set_error_delimiters("<p class = 'alert-danger'>", "</p>");
        return $this->CI->form_validation->run();
    }

    public function edicaoCategoria($dadosCategoria){
        $this->CI->form_validation->set_rules("nome", " ", "required|callback_categoria_ja_existe");
        $this->CI->form_validation->set_rules("id", "Id", "required|numeric");
        $this->CI->form_validation->set_rules("usuario_id", "Id usuario", "required|numeric");
        $this->CI->form_validation->set_error_delimiters("<p class='alert-danger'>", "</p>");
        $dadosInseridos =  $this->CI->form_validation->run();
        $manteveMesmoNome = $this->CI->CategoriaDao->ehValidoEditarMesmoNome($dadosCategoria['nome'], $dadosCategoria['id']);
        if($dadosInseridos || $manteveMesmoNome) return true;
        return false;

    }

    #minhas resgras de validação
    public function email_em_uso($email){
        $emailsEmUso = $this->CI->UsuarioDao->busca('email');
        foreach ($emailsEmUso as $emailEmUso){
            if($emailEmUso['email'] == strtolower($email)){
                $this->CI->form_validation->set_message("email_em_uso", "Este email já está sendo utilizado");
                return FALSE;
            }
        }
        return TRUE;
    }

    public function categoria_ja_existe($nome){
        $usuario = $this->CI->login->usuarioLogado();
        $nomeCategoriasExistentes = $this->CI->CategoriaDao->busca('nome', $usuario->id);
        foreach($nomeCategoriasExistentes as $categoriaExistente){
            if(strtolower($categoriaExistente['nome']) == strtolower($nome)){
                $this->CI->form_validation->set_message("categoria_ja_existe", "Essa categoria já existe");
                return FALSE;
            }
        }
        return TRUE;
    }

}

Contudo quando eu tento enviar o formulário surge o seguinte erro:

 "Não	existe	uma	mensagem	de	erro	para	o	campo	com	o	nome.(categoria_ja_existe)" 

O mesmo acontece para a outra validação que eu criei, já tentei passar a função com e sem callback, mas nada adiantou, desde já agradeço pela ajuda.

ps: a classe em questão se trata de uma lib (n sei se isso interfere em algo)

veja se no teu banco não tem uma categoria com nome em branco, se sim sua validação está funcionando e avisando que tu está cadastrando novamente outra categoria com nome em branco.