2014-01-08 15 views
6

私はこの質問が何度も何度も尋ねられてきたことは知っていますが、私はそれをまったく動かすことができませんでしたが、文字通り答えがうまくいかなかったかもしれません。仕事はありません。とにかくiOS7 - タブバー内にある一部のView Controllerの向きをロックしますか?

、次のように自分のアプリケーションのビューコントローラのレイアウトがあり、これはタブ付きのアプリケーションであることに注意して、単一ビューアプリケーションではありません:複数のナビゲーションバーのコントローラに

マスタータブバーコントローラ>支店オフは​​(すべてを参照同じCustomNavigationControllerクラス)>各Nav Controllerの下にはいくつかのUIViewControllerがあり、そのうちのいくつかはカスタムView Controllerクラスを参照しています。は、どのように私は、しかし、は、いくつかのページ(UIViewControllers)にすることができ、ONLYポートレートモードに自分のアプリケーション内のすべてのページの向きをロックすることができます。私の質問がある

View Controller Layout

(階層の視覚的表現のための写真を参照)ユーザーがデバイスを回転させると、横に回転できますか? (上の画像の星印が付いたページは、私が回転を許可したいものです)

覚えておきたいビューコントローラは、ナビゲーションコントローラの子供です子をTab Bar Controllerに移動します。また、View Controllerの1つがNavigation Controllerの下にないことに注意してください。Tab ControllerはTab Bar Controllerの直下にあります。

は私のアプリ

タブバーコントローラコード(私が持っていたことがないよう、ここで意味のあるコードが存在しないことに注意の関連クラスからあなたに

コードそんなにありがとうこれのクラス)

@interface TabBarController() 

@end 

@implementation TabBarController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
@end 

ナビゲーションコントローラクラスは、(また、この

@interface NavigationBar() 
@end 
@implementation NavigationBar 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.title = @"NavigationController"; 
    } 
    return self; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

ホームページクラス(ポートレートでロックする必要があります)

@interface HomePage() 

@end 

@implementation HomePage 


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.title = @"HomePage"; 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // If the condition is not true/not YES, than create and show alert. 
    if (![[NSUserDefaults standardUserDefaults] 
      boolForKey:@"didShowOneTimeAlert"]) { 

     //Define and Edit the Alert details. 
     UIAlertView *zoomTip = [[UIAlertView alloc] initWithTitle:@"Tips" message:@"On all web site and map pages, pinch in and out to zoom. \n \n On the 'Program' page, tap on a session to view more details." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil]; 

     //Show the alert 
     [zoomTip show]; 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"didShowOneTimeAlert"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    } // End if 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
@end 

マップクラス(マップを表示し、できなければならないページのためのクラスがありませんでした回転する)

@interface MezzanineLevelMap() 
@end 
@implementation MezzanineLevelMap 
@synthesize scrollView, imageView; 


-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return imageView; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Mezzanine Level"]]; 
    self.imageView = tempImageView; 

    scrollView.maximumZoomScale = 1; 
    scrollView.minimumZoomScale = .25; 
    scrollView.clipsToBounds = YES; 
    scrollView.delegate = self; 
    [scrollView addSubview:imageView]; 
    scrollView.zoomScale = .25; 

    // Change scroll view sizes according to the screen size 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 

     CGSize result = [[UIScreen mainScreen] bounds].size; 
     if (result.height == 480) { 
      [scrollView setFrame:CGRectMake(0, 5, 320, 475)]; 
     } else { 
      [scrollView setFrame:CGRectMake(0, 5, 320, 563)]; 
     } // End if 
    } // End if 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

答えて

0

各viewcontrollerでは、次のコードを記述してpeとして返すことができますr要件。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return YES/NO; 
} 
+0

でたぶん私は右のそれを実装していないのですが、私がやったことは、ビューコントローラへの参照を作成したUIViewControllerクラスにコードをコピーしただけで、「NO」が返されました。これは、そのビューコントローラの向きをロックしていない、私はまだデバイスの向きを回転させることができた。私はその後「はい」を返そうとしましたが、それも全く何もしませんでした。 どのようなアイデアですか? – n00bAppDev

+0

このURLを一度参照してください:http://stackoverflow.com/questions/14174449/lock-the-orientation-of-viewcontroller – Ashutosh

+0

そのスレッドで提供されている回答のコードをどのように使うべきか説明してください。私はそれを私のタブバーコントローラにコピーして何も起こらず、ビューコントローラにコピーするとエラーが返されました。 – n00bAppDev

2

ちょうどあなたのビューコントローラ(iOSの6+)に次のように実装します。これを固定する

- (BOOL)shouldAutorotate { 
    return NO; 
} 
0
+2

ようこそStackoverflowへ。答えとしてリンクを貼り付けるだけでなく、リンクが時間の経過とともに変化する可能性があるので、回答自体または少なくともリンクの文脈を提供してください。 http://stackoverflow.com/help/how-to-answerを参照してください。 – wmk

関連する問題