2

SWRevealViewController を使用してアプリケーションの両側にサイドバーを表示するようにアプリを移行しようとしています。しかし、サンプル アプリの 1 つのコードに従っているにもかかわらず、正面図の ViewController が正しく機能しないというエラーが表示されます。viewDidLoad が呼び出されますが、すべてが黒のままです。

興味深いことに、viewDidLoad で背景色をビューの赤に設定すると、これが反映されます。しかし、元のストーリー ボードの Interface Builder のものはそうではありません。

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;
}

これは、MainViewController 専用の Main.Storyboard です。 ここに画像の説明を入力

アプリが読み込まれると、ビューは真っ黒になります。しかし、左端と右端の両方からドラッグして、期待どおりにサイド バーを表示できます。したがって、真っ黒になるのは FrontView だけです。ビューがロードされていることを示す -(void)loadView{} と同様に、コンソールに表示される ViewDidLoad に NSLog() を貼り付けました。

viewDidLoad に入れると、[self.view setBackgroundColor:[UIColor redColor]]これが有効になります。つまり、ビューにリンクされますが、ストーリーボード内のビューが表示されないだけです。ストーリーボードには表示される NavigationController も含まれているため、これは奇妙です (そのナビゲーション コントローラーが他の場所から来ていない限り、そうではないと確信しています)。

これを引き起こしている可能性のあるものについて何か考えはありますか?

4

1 に答える 1