0

に我々はUINavigationViewControllerルートviewControllerとしてAppDelegateにありますダブルUINavigationBarはUITabBarController

Restore *callRestore=[[Restore alloc]initWithNibName:@"Restore" bundle:nil]; 
self.navigationController = [[UINavigationController alloc] initWithRootViewController:callRestore]; 
self.window.rootViewController = self.navigationController; 

我々が推進している新viewControllerTabViewController)上記からのリストア:私たちが追加されている。このTabViewController

callTabView=[[TabViewController alloc] initWithNibName:@"TabViewController" bundle:nil]; 
[self.navigationController pushViewController:callTabView animated:YES]; 

UITabBarControllerはプログラムでサブビューとして表示され、この中でUITabBarControllerが表示コントローラとして5 UINavigationBarControllerを持っています:

NSArray* controllers = [NSArray arrayWithObjects:navControllerDashboard, navControllerAccounts, navControllerTransation,navControllerCallDisplayReports,navControllerMore, nil]; 
self.tabBarController.viewControllers = controllers; 
self.tabBarController.delegate = self; 
self.tabBarController.view.frame = self.view.frame; 
[self.view addSubview:self.tabBarController.view]; 

我々は両方landscapeportraitモードの上に2 UINavigationBarを取得しているこれらの5 UINavigationViewControllerから任意のビューを回転しています。

以下の画像を確認してください。

enter image description here

enter image description here

とdidRotateFromInterfaceOrientationは、これらの5 UINavigationViewControllerビューからの呼び出しされていません。

助けが必要ですか?

UIViewController *parent = ...; 
UIViewController *child = ...; 

[child willMoveToParentViewController: parent]; 
[parent addChildViewController: child]; 
[parent.view addSubview: child.view]; 
[child didMoveToParentViewController:parent]; 

を。これは、子ビューコントローラにすべてのイベントを伝播し、可能性予期しない動作を削除します:あなたは次の操作を実行する必要が手動でサブビューとしてあなたが別のものにビューコントローラを追加

+0

callTabViewはUIViewControllerです。私たちはtabBarControllerを初期化し、次のようにtabBarControllerを追加しています:self.tabBarController = [[UITabBarController alloc] init]; [self.view addSubview:self.tabBarController.view]; – varun

答えて