ios - SWRevealViewController FrontViewController no se carga, está pegado como negro, otras vistas están bien
objective-c storyboard (1)
Yo estaba pasando lo mismo. Lo arreglé mientras miraba el código de Ejemplo.
- En su Storyboard, agregue un UIViewController
- Selecciónelo y en Identity Inspector solo use ''SWRevealViewController'' como clase
- Agregue un UITableViewController a su storyboard
- Ahora seleccione su ViewControler agregado previamente y haga clic con el botón derecho: trace una línea a su TableViewController
- Seleccione ''revelar controlador de conjunto de vista de visualización''
- Haga clic en el nuevo Segue agregado y en Attribute Inspector cambie el identificador a ''sw_rear''
- Agregue cualquier ViewController personalizado (por ejemplo, ''MyViewController'') al storyboard
- Selecciónelo, luego vaya a Menú-> Editor-> Insertar en-> Controlador de navegación
- Ahora debe aparecer un nuevo controlador de navegación
- Nuevamente, haga clic con el botón derecho: trace una línea desde el primer ViewController hasta su nuevo NavigationController.
- De nuevo elija ''revelar controlador de conjunto de vista de visualización''
- Ahora establece el identificador de este nuevo Segue en ''sw_front''
Ahora que tiene una Configuración básica y cuando ejecuta su aplicación, debería ver su ViewController personalizado. Ahora se debe agregar el botón para el menú.
En su ViewControllers .m, agregue lo siguiente:
@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];
}
}
Ahora vuelve a cambiar a la historia. Agregue un UIBarButtonItem a MyViewController. Nuevamente, haga clic con el botón derecho: dibuje una línea desde MyViewController hasta este nuevo elemento en NavigationBar. Elija ''revealButtonItem''.
¡Eso es! Repita los últimos pasos para cada ViewController que quiera agregar. Solo tiene que conectarlos con un clic con el botón derecho del TableView al Control de navegación recién agregado de cada uno de sus ViewControllers agregados. Para presionar ViewControllers simplemente seleccione ''revelar controlador de empuje de vista de vista''.
¡Espero que esto ayude un poco!
Intento hacer la transición de nuestra aplicación para usar SWRevealViewController para proporcionarnos una barra lateral a cada lado de la aplicación. Pero a pesar de seguir el código en una de las aplicaciones de ejemplo, recibo un error donde el ViewController para la vista frontal no funciona correctamente. Se llama a viewDidLoad, pero todo permanece en negro.
Curiosamente, si en mi viewDidLoad, establecí el color de fondo en rojo de la vista, esto se refleja. Pero las cosas en el constructor de Interface del storyboard original no lo son.
El código que uso en AppDelegate es:
- (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;
}
Este es el Main.Storyboard que es solo para MainViewController:
Cuando se carga la aplicación, la vista es simplemente negra. Pero puedo arrastrar desde el borde izquierdo y derecho y ver las barras laterales como se esperaría. Por lo tanto, es solo el FrontView el que aparece negro. Grabé un NSLog () en ViewDidLoad, que aparece en la consola, al igual que uno en - (void) loadView {}, que muestra que la Vista se está cargando.
Si pongo en viewDidLoad a [self.view setBackgroundColor:[UIColor redColor]]
esto tiene efecto, lo que significa que está vinculado a la vista, pero es solo que la vista dentro del guión gráfico no está apareciendo. Lo cual es extraño, ya que el Storyboard también contiene un NavigationController, que aparece (creo, a menos que ese controlador de navegación venga de otro lado) y estoy bastante seguro de que no lo es.
¿Alguna idea de lo que podría estar causando esto?