Erzwingen einer Änderung der Ausrichtung beim Wechseln zwischen den Registerkarten. (Ziel c)
also ich teste das, damit ich es auf meinem größeren Projekt verwenden kann. Ich habe einen Tab-Controller namens TabBar dieser TabBar hat 2 Registerkarten jede Registerkarte hat einen Navigationscontroller. Ein viewController mit einer Schaltfläche (OkButtonViewController) Wenn Sie auf diese Schaltfläche klicken, wechseln Sie mit der Bezeichnung (LabelViewController) zum Viewcontroller. Der OkButton View Controller befindet sich immer im Hochformat und der LabelViewController kann die Ausrichtung wechseln. das funktioniert nur in einer situation schief geht es. Wenn Sie sich im LabelViewController befinden, im Querformat ausgerichtet sind und die Registerkarten wechseln, befindet sich der OkButtonViewController auch im Querformat und bleibt im Querformat. Wie kann ich den Viewcontrol zwingen, zum Portrait zurückzukehren?
Hier ist mein Code.
Ich muss wahrscheinlich etwas in der TabBar oder in der RotatingTabBarAppDelegate hinzufügen. Ich weiß einfach nicht was.
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
sorry für die schlechte Englisch.
Haben Sie eine Lösung für dieses Problem gefunden? – k06a