1

My test project.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.

+0

Haben Sie eine Lösung für dieses Problem gefunden? – k06a

Antwort

2

Sie können keine Ansicht zum Drehen zwingen, wahrscheinlich würde Apple Ihre App ablehnen, Sie müssen einen anderen Weg finden, dies zu entwerfen.

+0

Das ist scheiße! : p thx für die Antwort. – Sneezy

+0

Vielen Dank für diese Information. Es ist irgendwo dokumentiert? –

+0

Es ist einfach nicht möglich, öffentliche API zu verwenden –

Verwandte Themen