iOS中

2013-01-22 50 views
0
交換雙方控制器和視圖

我在我的項目中的以下控制器和視圖:iOS中

PortraitController.m 
PortraitView.xib 
LandscapeController.m 
LandscapeView.xib 

肖像控制器用作縱向視圖控制器,並 風景控制器作爲控制器爲景觀視圖。

我需要切換BOTH控制器並查看設備方向的變化。 這種方法是由蘋果公司建議的,但他們沒有提供一個可用的通用示例!

我發現了各種不同的例子,但他們不是我所需要的 - 在同一個xib中一個控制器+兩個視圖,來自導航控制器的push + pop,將第二個視圖放在前一個視圖上......都不是我需要。

當設備方向更改時,在這兩個控制器+視圖組合之間切換(通過動畫)最簡單的方法是什麼?

有沒有可以適用於iOS 5和iOS 6的解決方案?

+0

蘋果的建議在哪裏改變控制器和方向的觀點變化? – Goz

+2

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/RespondingtoDeviceOrientationChanges/RespondingtoDeviceOrientationChanges.html#//apple_ref/doc/uid/TP40007457-CH7-SW14 部分:創建備用景觀接口 – Dusan

+0

待辦事項你需要在兩者之間分享信息? – perrohunter

回答

3

Apple提供的示例使用Storyboard的segue機制從一個視圖移動到另一個視圖,如果您使用的是NIB文件,則需要使用UINavigationViewController方法,您甚至可以設置要從一個UIControllerView到另一個

例如,這個代碼將從一個UIViewController中切換到另一個具有翻頁動畫

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:0.75]; 
[self.navigationController pushViewController:yourViewController animated:NO]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:navController.view cache:NO]; 
[UIView commitAnimations]; 

爲了實現知道的事實時,推動一個視圖或另一個(或使用SEGUE如果你切換到故事板),你可以註冊聽UIDeviceOrienta從您的導航控制器或當前視圖tionDidChangeNotification事件,註冊一個特定的方法來處理,例如屏幕旋轉

-(void)viewWillAppear:(BOOL)animated { 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodToChangeViewController) name:UIDeviceOrientationDidChangeNotification object:nil]; 

} 

-(void)viewWillDisappear:(BOOL)animated { 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil]; 
} 

註銷事件

希望這可以給你一些見解是非常重要的如何實現你的目標

1

這是一個很好的方法來解決你的問題: Rotating to Show Different iOS Views。 使用NSNotificationCenter,您可以管理旋轉事件並推送/彈出控制器,或更改任何您想要的視圖。 希望這可以幫助你。