Check out the wiki entry on this: http://codeigniter.com/wiki/Header_and_footer_and_menu_on_every_page/
I basically use a class variable of $this->data that I pass to all my views. I load a “view partial” with my content into $this->content, which I alias with a reference of $this->data[‘content’] =& $this->content.
Then in my ‘master template’ for the whole page I just have an echo $content in my view, which is part of the $this->data array I pass to my all/most of my views.
The wiki details how this works, and I’ve been meaning to put my take on there but haven’t gotten around to revising it. Basically I use my controller’s constructor for these sorts of header/footer initializations, but you can just as well use a MY_controller - same basic principle.
None of this violates MVC. Indeed, nothing in MVC dictates you can only use one View.