SWRevealViewController FrontViewController ne se charge pas, coincé en noir, d'autres vues bien

J'essaie de faire la transition de notre application pour utiliser SWRevealViewController pour nous donner une barre latérale de chaque côté de l'application. Mais malgré le fait de suivre le code dans l'un des exemples d'applications, j'obtiens une erreur où le ViewController pour la vue de face ne fonctionne pas correctement. viewDidLoad est appelé, mais tout rest noir.

Intéressant, si dans mon viewDidLoad, je place la couleur d'arrière-plan au rouge de la vue, ceci est reflété. Mais ce n'est pas le cas dans le constructor d'interface du storyboard original.

Le code que j'utilise dans AppDelegate est:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window = window; MainViewController *frontViewController = [[MainViewController alloc] init]; RearViewController *rearViewController = [[RearViewController alloc] init]; UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:frontViewController]; UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearViewController]; SWRevealViewController *revealController = [[SWRevealViewController alloc] initWithRearViewController:rearNavigationController frontViewController:frontNavigationController]; revealController.delegate = self; RightViewController *rightViewController = rightViewController = [[RightViewController alloc] init]; rightViewController.view.backgroundColor = [UIColor greenColor]; revealController.rightViewController = rightViewController; //revealController.bounceBackOnOverdraw=NO; //revealController.stableDragOnOverdraw=YES; self.viewController = revealController; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; } #pragma mark - SWRevealViewDelegate - (id <UIViewControllerAnimatedTransitioning>)revealController:(SWRevealViewController *)revealController animationControllerForOperation:(SWRevealControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC { if ( operation != SWRevealControllerOperationReplaceRightController ) return nil; if ( [toVC isKindOfClass:[RightViewController class]] ) { if ( [(RightViewController*)toVC wantsCustomAnimation] ) { id<UIViewControllerAnimatedTransitioning> animationController = [[CustomAnimationController alloc] init]; return animationController; } } return nil; } 

C'est le Main.Storyboard qui est juste pour le MainViewController: entrez la description de l'image ici

Lorsque l'application est chargée, la vue est simplement noire. Mais je peux glisser à la fois du bord gauche et du côté droit et voir les barres latérales comme prévu. Donc, c'est seulement le FrontView qui arrive en noir. J'ai collé un NSLog () dans le ViewDidLoad, qui apparaît dans la console, tout comme un dans – (void) loadView {}, qui montre que la View est en cours de chargement.

Si je mets dans viewDidLoad un [self.view setBackgroundColor:[UIColor redColor]] cela prend effet, ce qui signifie qu'il est lié à la vue, mais c'est juste la vue à l'intérieur du storyboard qui n'apparaît pas. Ce qui est bizarre puisque le Storyboard contient aussi un NavigationController, qui apparaît (je pense – à less que ce controller de navigation ne vienne d'ailleurs – ce dont je suis sûr que ce n'est pas le cas).

Des pensées sur ce qui pourrait causer cela?

J'ai eu la même chose. Je l'ai corrigé en regardant le code Exemple.

  1. Dans votre Storyboard, ajoutez un UIViewController
  2. Sélectionnez-le et dans Identity Inspector, utilisez simplement 'SWRevealViewController' comme class
  3. Ajouter un UITableViewController à votre story-board
  4. Maintenant, select votre ViewControler précédemment ajouté et cliquez avec le button droit de la souris sur votre TableViewController
  5. Sélectionnez «Révéler le controller du controller de vue»
  6. Cliquez sur le nouveau Segue et dans l'inspecteur d'attributes, changez l'identifiant en 'sw_rear'
  7. Ajouter un ViewController personnalisé (par exemple 'MyViewController') au story-board
  8. Sélectionnez-le, puis allez dans Menu-> Editeur-> Embed In-> Navigation Controller
  9. Maintenant, un nouveau controller de navigation devrait apparaître
  10. Encore une fois cliquez avec le button droit de la souris sur une ligne du premier ViewController à votre nouveau NavigationController
  11. Choisissez à nouveau "Révéler le controller du controller de vue"
  12. Maintenant, définissez l'identifiant de cette nouvelle Segue sur 'sw_front'

Maintenant, vous avez une configuration de base et lors de l'exécution de votre application, vous devriez voir votre ViewController personnalisé. Maintenant, le button pour le menu doit être ajouté.

Dans votre ViewControllers .m ajoutez:

 @interface MyViewController () @property (nonatomic) IBOutlet UIBarButtonItem* revealButtonItem; @end - (void)viewDidLoad { [super viewDidLoad]; [self customSetup]; } - (void)customSetup { SWRevealViewController *revealViewController = self.revealViewController; if ( revealViewController ) { [self.revealButtonItem setTarget: self.revealViewController]; [self.revealButtonItem setAction: @selector( revealToggle: )]; [self.navigationController.navigationBar addGestureRecognizer: self.revealViewController.panGestureRecognizer]; } } 

Maintenant, passez à nouveau au story-board. Ajoutez un UIBarButtonItem à MyViewController. Encore une fois cliquez avec le button droit de la souris sur une ligne de MyViewController vers ce nouvel élément dans la barre de navigation. Choisissez 'revealButtonItem'.

C'est tout! Répétez les dernières étapes pour chaque ViewController que vous souhaitez append. Vous n'avez qu'à les connecter en cliquant avec le button droit de la TableView sur votre nouveau NavigationController de chacun de vos ViewControllers ajoutés. Pour pousser les ViewControllers, il suffit de sélectionner 'controller view controller push'.

J'espère que ça aidera un peu!