2014-05-19 103 views
0

你好,我對iPhone開發(使用iOS 7)頗爲陌生。基本上我希望我的應用程序響應屏幕旋轉(即更改屏幕方向)我的項目同時使用UITabBarControllerUINavigationController。但是,當我旋轉設備時,它不會在名爲LoginView.mViewController中調用「shouldAutorotate」函數。UITabBarController和UINavigationController的子類化

因此,我已按照here中的回答,直到UITabBarControllerUINavigationController的子類。有人可以向我解釋如何添加(即引用它)LoginView.m類或整個項目中的方向行爲。

非常感謝您的幫助。

感謝

+0

有人嗎?請幫助我.. – Yrol

+0

請詳細闡述一下你試圖達到的目標。 「shouldAutorotate」將被稱爲根視圖控制器,在你的情況下,它是一個TabBarController或NavigationController,但我們需要更多關於期望結果的細節 – Argent

+0

@Argent基本上我想改變屏幕方向方面到屏幕旋轉。我有一個名爲LoginView.m的視圖,它擴展了「UIViewController」。另外我在AppDelegate.m中看到UITabBarController和UINavigationController屬性。如果你想讓你的視圖自動旋轉,並且你正在使用基本的ios控件,那麼請幫忙 – Yrol

回答

0

在你的子類的UITabBarController

- (BOOL)shouldAutorotate { 

    UINavigationController *navView = (UINavigationController *)[self selectedViewController]; 
    //Get the selected current tab viewcontroller. I guess you are having a Navigationcontroller  

    UIViewController *vc = [navView.viewControllers objectAtIndex:0]; 
    //Fetch root viewcontroller of your navigationcontroller 

    return [self checkOrientationForViewController:vc]; 

} 

-(BOOL) checkForViewsForViewController : (UIViewController *)vc{ 

    if([vc isKindOfClass:[FirstViewController class]]){ 

     FirstViewController *vc1 = (FirstViewController *)vc; 

     return [vc1 shouldAutorotate]; 
    } 
    if([vc isKindOfClass:[SecondViewController class]]){ 

     SecondViewController *vc2 = (SecondViewController *)vc; 

     return [vc2 shouldAutorotate]; 
    } 
    if([vc isKindOfClass:[ThirdViewController class]]){ 

     ThirdViewController *vc3 = (ThirdViewController *)vc; 

     return [vc3 shouldAutorotate]; 
    } 
    return YES; 
} 

在各自viewcontrollers實現shouldAutorotate方法

+0

感謝您的時間。我是否必須在AppDelegate文件中引用它以通知應用程序我正在使用這些自定義類? – Yrol

+0

是的,你必須導入它AppDelegate – iPrabu

+0

你能告訴我怎麼做嗎,這就是我困惑的地方。再次感謝 – Yrol

0

取而代之的子類,是值得知道的,也有委託方法,在UINavigationController的和的UITabBarController這使您可以在運行時處理旋轉:

- (UIInterfaceOrientation)navigationControllerPreferredInterfaceOrientationForPresentation:(UINavigationController *)navigationController 

Ref doc.

- (NSUInteger)tabBarControllerSupportedInterfaceOrientations:(UITabBarController *)tabBarController 

Ref doc

Evenf如果蘋果已經移除了意見,不繼承導航和TabBar控制器,使用代表團將隨時間變化的最可靠的解決方案

+0

謝謝,我會給它一個去.. – Yrol

0

而不是使用代表團的你也可以使用

- (NSUInteger)supportedInterfaceOrientations 

的UINavigationController和UITabBarController詢問他們的子視圖控制器支持哪些接口方向。所以你可以在你的LoginView.m中實現「 - (NSUInteger)supportedInterfaceOrientations」並返回適當的接口方向。

您還需要編輯您的Info.plist並添加支持的接口方向。你可以通過打開項目視圖來使用Xcode。也看看Apples documentation on supporting interface orientations

+0

謝謝,我會盡力..] – Yrol

相關問題