лучше сделать это в делегате приложения и, конечно же, НЕ добавлять UITableViewController.view в UIViewController.view ... просто добавьте его в UIWindow и затем отклоните старый UIViewController (removeFromSuperView это представление и затем освободите его )
EDIT:
вот как мне удается:
Я добавляю метод в мое приложение. Delegate:
-(void)switchMainView;
и из моего UIViewController я просто называю это так:
[[[UIApplication sharedApplication] delegate] switchMainView];
в switchMainView я просто
удалить мой UIViewController.view из superview,
выпустить UIViewController,
выделить UITableViewController и инициализировать его, затем
добавьте свой вид в окно приложения:
-(void)switchMainView{
if (mainView!=nil){ // mainView is the UIViewController
[mainView.view removeFromSuperview];
[mainView release];
mainView = nil;
}
Menu *vc; // Menu is my class, subClass of a UITableViewController
vc = [[Menu alloc] init];
nc = [[UINavigationController alloc] initWithRootViewController:vc];
[window addSubview:nc.view];
[vc release];
}
и затем я делаю то же самое для возвращения, в конце концов