There’s no way with ui-router. You can however do this the old way and create your own simple solution as I show below. Sorry for any mistakes, I’m writting this from the top of my head 
Main container for example for the side menu or tabbed interface can be:
<div ui-view></div>
Then above put several nested views. If you have three tabs or three main pages, then add three nested views, for example:
<div ng-include="'about.html'" ng-show="isAboutShown"></div>
<div ng-include="'indexinfo.html'" ng-show="isIndexShown"></div>
<div ng-include="'exitadpage.html'" ng-show="isExitPageShown"></div>
The ng-include directive refers to templates, so nothing new. The ng-show however controls the visibility. Assume that the indexinfo.html is the initial start page. So you must define the $scope.isIndexShown = true and the rest of the variables false. You can do this in your controller just like this:
$scope.isAboutShown = false;
$scope.isIndexShown= true;
$scope.isExitPageShown = false;
Then in your side menu or on tabs don’t use hrefs as defined for ui-router, but just call a function that will change the visibility of the nested views by changing the scope variables. Below are example items from a side menu:
<ion-item nav-clear menu-close ng-click="showaPage('about');" >
<span translate>ID_ABOUT</span>
</ion-item>
<ion-item nav-clear menu-close ng-click="showaPage('index');" >
<span translate>ID_INDEX</span>
</ion-item>
<ion-item nav-clear menu-close ng-click="showaPage('exit');" >
<span translate>ID_EXIT</span>
</ion-item>
You can use the same for tabs or anything else. The key is to call the showaPage() function which will change the visibilty of selected views. It may look like this:
$scope.showaPage = function(apage) {
if (apage == 'index') {
$scope.isIndexShown = true;
$scope.isAboutShown = false;
$scope.isExitPageShown = false;
} else
if (apage == 'about') {
$scope.isIndexShown = false;
$scope.isAboutShown = true;
$scope.isExitPageShown = false;
} else
if (apage == 'exit') {
$scope.isIndexShown = false;
$scope.isAboutShown = false;
$scope.isExitPageShown = true;
}
$rootScope.viewHistory.push(apage);
}
And that’s all. You have persisten views that are not recreated each time you switch the view. The state is kept. You can even do a simple routing if you remember the history of pages in an array and then use the history for the back button navigation.
The disadvantage is that transitions between pages is lost, but you can easily add your own using the CSS and Angular animate features. This is however your homework
A big advantage of this solution is keeping the state and not recreating DOM each time and over again which means speeding up. It’s a perfect solution for simple apps which mobile apps are mostly. For a web app ui-router should be a better solution.
Let me know if this helped somehow 