2009-10-17 6 views
4

J'essaie de faire une autorotation automatique et j'ai le même problème expliqué ici: willRotateToInterfaceOrientation not being called.Rotation UIView - willRotateToInterfaceOrientation n'étant pas appelée

Même si j'ai implémenté shouldAutorotateToInterfaceOrientation et que j'ai renvoyé YES, dans chaque sous-classe UIViewController que j'ai implémentée; willRotateToInterfaceOrientation n'est pas appelé. Peut-être que quelqu'un pourrait me dire ce qui me manque. Je structurent les contrôleurs de vue (I espère que cela est assez clair ..):

NavigationController (Programatically) 
    -with root > TabBarController (Programatically) 
        -with tab item > NavigationController (Programatically) 
            -with root > UITableViewController (a Subclass) 
               -pushed to navigator controller > UIViewController (a Subclass). 

J'espère que quelqu'un peut me aider. Merci d'avance!

+0

Avez-vous déjà trouvé une réponse? Je cours dans le même problème. – rein

+0

Cela semble être un problème fondamental iOS SDK. – Oscar

Répondre

1

Vous pouvez essayer d'insérer votre contrôleur (NavigationController) à la fenêtre par rootviewcontroller.

si ce ne fonctionne pour vous, utilisez les notifications UIApplicationWillChangeStatusBarOrientationNotification

Modifier

Travaux:

// custom controller 
    TestController *t = [[TestController alloc] init]; 

    // navigaton 
    UINavigationController *controllerinsertIntoTab = [[UINavigationController alloc] initWithRootViewController:t]; 

    // tab bar 
    UITabBarController *tabbarController = [[UITabBarController alloc] init]; 
    [tabbarController addChildViewController:controllerinsertIntoTab]; 

    // first navigation 
    UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:tabbarController]; 

    [self.window setRootViewController:controller]; 

spécial pour vous https://github.com/sakrist/TestControllers

J'espère qu'il est utile

0

Si vous ne recevez pas de rappels sur willAutoRotateToInterfaceOrientation dans un contrôleur de vue, ajoutez le contrôleur de vue en tant que contrôleur de vue enfant du contrôleur de vue racine.

Par exemple; disons self.viewController est votre contrôleur de vue racine et childViewController est le contrôleur de vue dans lequel vous souhaitez obtenir des rappels de rotation automatique, ajoutez la ligne de code suivante;

[self.viewController addChildViewController:childViewController];

En fait, en ajoutant que le contrôleur de vue de l'enfant à un contrôleur de vue qui obtient le dos d'appels de rotation fonctionnent aussi.

Espérons que ça aide.

Questions connexes