Я пытаюсь перевести наше приложение на использование SWRevealViewController, чтобы дать нам боковую панель с каждой стороны приложения. Но, несмотря на выполнение кода в одном из примеров приложений, я получаю сообщение об ошибке, когда ViewController для вида спереди не работает должным образом. viewDidLoad вызывается, но все остается черным.
Интересно, что если в моем представленииDidLoad я устанавливаю красный цвет фона представления, это отражается. Но в конструкторе интерфейсов из оригинальной раскадровки ничего нет.
Код, который я использую в AppDelegate:
- (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;
}
Это Main.Storyboard, который предназначен только для MainViewController:
Когда приложение загружается, вид просто черный. Но я могу перетаскивать как с левого, так и с правого края и просматривать боковые панели, как и ожидалось. Так что только FrontView становится черным. Я вставил NSLog() в ViewDidLoad, который появляется в консоли, как и в -(void)loadView{}, который показывает, что представление загружается.
Если я помещу в viewDidLoad [self.view setBackgroundColor:[UIColor redColor]]
, это вступит в силу, то есть оно будет связано с представлением, но это просто представление внутри раскадровки не отображается. Что странно, так как раскадровка также содержит NavigationController, который действительно появляется (я думаю, если этот навигационный контроллер не приходит откуда-то еще, что я почти уверен, что это не так).
Любые мысли о том, что может быть причиной этого?