有幾種方法可以做到這一點。有些比其他更好,但主要取決於具體情況的需要。
- 替換您在循環過程中提到的
rootViewController
。
- 始終使用
UISplitViewController
並使用segue
與replace
替換縱向和橫向之間旋轉時的detailViewController
。
- 使用/做增加了一個自定義的容器視圖控制器/使用
addChildViewController:
和removeFromParentViewController:
消除了對旋轉相應的視圖控制器
選擇3
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self.childViewControllers[0].view removeFromSuperView];
[self.childViewControllers[0] removeFromParentViewController];
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
[self addChildViewController:portraitVC];
[self.view addSubview:portraitVC.view];
} else {
[self addChildViewController:landscapeVC];
[self.view addSubview:landscapeVC.view];
}
}
極其原油例如從你已經什麼說,我猜想選項3將是最合適的。儘管如此,我並不完全相信你需要切換視圖控制器,但我不熟悉ECSlidingViewController
,它提供了什麼,所以我不能確定。
來源
2013-02-19 15:41:38
DBD
感謝您的回覆。我想在檢測到旋轉時重置rootViewController。你知道我能做到嗎?當我嘗試它時,它似乎做了一些奇怪的分層和旋轉.... – 2013-02-19 16:14:58
問題是,我的ECSlidingViewController實現的主視圖控制器需要擴展一個特定的子類,這將在使用UISplitViewController時發生衝突。 – 2013-02-19 16:19:55
我最終將我的實現更改爲上面提出的解決方案3,這解決了問題。 – 2013-02-19 17:01:28