Es que la variable $data, la defines en el index() no en imprimir(). Por eso te pregunte como llamabas la función imprimir xD. La función "index()" es solo para cuando llamas directamente el controlador sin especificar una función.
La solución esta en que definas la variable $data (hacerlo todo...) en __construct(). Así se "setea" nada mas se cargue el Class dando igual si directa o indirectamente.
<?php
class Controlador extends CI_Controller {
private $data = NULL;
public function __construct(){
$this->data['variable'] = "Hola Mundo Como estas???";
}
public function index(){
$this->load->view('vista',$this->$data);
}
public function imprimir(){
$html = $this->load->view('vista',$this->data,true);
echo $html;
}
}
?>
O en declarar imprimir() como privada y llamarla desde index().
Saludos