Variables you use in a template have to be registered (except some common ones are registered for you), and they have to be registered *before* the template is rendered). preRegister() is used mostly for the existing vb templates because usually there is no hook location to allow you to use register() when the template is being rendered .
So, when you're rendering your own template, call register() before the call to render(), like:
PHP Code:
$templater = vB_Template::create('CVR4_searchprofile');
$templater->register('notifications_menubits', $notifications_menubits);
$CVR4_searchprofile = $templater->render();
// but use preRegister() here because you won't have a chance to call
// register() for the navbar template
vB_Template::preRegister('navbar', array('CVR4_searchprofile' => $CVR4_searchprofile));