Принудительное изменение ориентации при переключении между вкладками.(цель с) - PullRequest
1 голос
/ 28 марта 2012

My test project.

так что я тестирую это, чтобы я мог использовать его в моем большом проекте. У меня есть tabbarcontroller с именем TabBar эта вкладка имеет 2 вкладки, каждая вкладка имеет навигационный контроллер. ViewController с кнопкой (OkButtonViewController). При нажатии этой кнопки вы переходите к контроллеру представления с меткой (LabelViewController). OkButton View Controller всегда в портретной ориентации, а labelViewController может переключать ориентацию. это работает только в одной ситуации, это идет не так. когда вы находитесь в LabelViewController, ориентированном по горизонтали и переключаете вкладки, OkButtonViewController также находится в альбомной ориентации и остается в альбомной ориентации. Как я могу заставить viewcontroll вернуться к портрету?

вот мой код.

Мне, вероятно, нужно что-то добавить в TabBar или в RotatingTabBarAppDelegate. Я просто не знаю что.

TabBar.m

  #import "TabBar.h"

  @implementation TabBar

  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  {
      return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
  }

  @end

RotatingTabBarAppDelegate.h

  #import <Foundation/Foundation.h>
  #import "TabBar.h"

  @class RotatingTabBarAppViewController;

  @interface RotatingTabBarAppDelegate : NSObject<UIApplicationDelegate>
  {
      IBOutlet UIWindow *window;
  }

  @property (nonatomic, strong) UIWindow *window;

  @end

RotatingTabBarAppDelegate.m

  @implementation RotatingTabBarAppDelegate

  @synthesize window;

  -(void) applicationDidFinishLaunching:(UIApplication *)application
  {
      UIViewController *tab1 = [[UIViewController alloc] init];
      tab1.tabBarItem =[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:0];

      UIViewController *tab2 = [[UIViewController alloc] init];
      tab2.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemSearch tag:1];
      TabBar *tbc = [[TabBar alloc] init];

      [tbc setViewControllers:[NSArray arrayWithObjects:tab1, tab2, nil]];

      [window addSubview:tbc.view];

      [window makeKeyAndVisible];


  }

  @end

OkButtonViewController.h

   #import <UIKit/UIKit.h>

  @interface OkButtonViewContoller : UIViewController


  - (IBAction)ok;

  @end

OkButtonViewController.m

  #import "OkButtonViewController.h"
  #import "LabelViewController.h"

  #define kDetailSegue @"Detail"

  @implementation OkButtonViewContoller


  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  {
      return (interfaceOrientation == UIInterfaceOrientationPortrait);

  }

  - (IBAction)ok 
  {
      [self performSegueWithIdentifier:kDetailSegue sender:@"test"];
  }

  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
      if ([segue.identifier isEqualToString:kDetailSegue]) {
          ((LabelViewController *)segue.destinationViewController).testTekst = sender;
      }
  }

  @end

LabelViewController.h

  #import <UIKit/UIKit.h>

  @interface LabelViewController : UIViewController

  @property (nonatomic, strong) NSString *testTekst; 
  @property (nonatomic, strong) IBOutlet UILabel *testLabel;

  @end

LabelViewController.h

  #import "LabelViewController.h"

  @implementation LabelViewController
  @synthesize testTekst;
  @synthesize testLabel;

  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  {
      return YES;
  }

  -(void)viewWillAppear:(BOOL)animated
  {
      [super viewWillAppear:animated];
      self.testLabel.text = testTekst;
  }

  @end

извините за плохой английский.

1 Ответ

2 голосов
/ 28 марта 2012

Вы не можете принудительно повернуть представление, возможно, Apple отклонит ваше приложение, вам нужно найти другой способ создать это.

...