だから私はこれをテストしているので、より大きなプロジェクトで使用できます。TabBarという名前のタブバーコントローラーがあります。このタブバーには2つのタブがあり、すべてのタブにナビゲーションコントローラーがあります。ボタン(OkButtonViewController)のあるviewControllerこのボタンをクリックすると、ラベル(LabelViewController)のあるviewControllerに移動します。OkButton View Controllerは常に縦向きであり、labelViewControllerは向きを切り替えることができます。これは、問題が発生した1つの状況でのみ機能します。LabelViewControllerを使用していて、横向きでタブを切り替えると、OkButtonViewControllerも横向きになり、横向きのままになります。ビューコントロールを強制的にポートレートに戻すにはどうすればよいですか?
これが私のコードです。
おそらく、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
悪い英語でごめんなさい。