1

我的问题是,当我呈现一个UIViewController呈现视图时,呈现黑色。

我有一个UIViewController命名mainViewController,它是我的窗口的根视图。在里面我有一个MMDrawerController(刚刚添加为 mainViewController 视图的子视图)。

MMDrawerController包含我的其余观点。

但是,当我展示UIViewControllermainViewController的新 VC 时,新的 VC 显示得很好,但是当它关​​闭时,它只留下黑屏。注意添加时出现黑屏(我可以直接看到)。解雇时不会。

出于测试目的,我做了以下代码:

UIViewController *vc = [UIViewController new];
vc.view.backgroundColor = [UIColor redColor];
[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentViewController:vc animated:NO completion:^{
    [vc dismissViewControllerAnimated:YES completion:nil];
}];

与正常使用相同的黑色结果。(通常是QLViewController...)

我的 mainViewController 设置如下:

_mainViewController = [MyMainViewController new];
_window.rootViewController = _mainViewController;
[self.window addSubview:_mainViewController.view];

MMDrawerController 的源代码在我的项目中是最新的

4

2 回答 2

1

我已经在 MMDrawerController 示例项目中测试了代码,但我无法重现该问题,以下是我尝试过的:

MMAppDelegate.m

-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    //...

    UIViewController *testVc = [[UIViewController alloc] init];
    testVc.view.backgroundColor = [UIColor greenColor];
    [testVc.view addSubview:self.drawerController.view];

    [self.window setRootViewController:testVc];
    [self.window addSubview:testVc.view];

    return YES;
}

MMExampleSideDrawerViewController.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch (indexPath.section) {
        case MMDrawerSectionViewSelection:{
            UIViewController *vc = [UIViewController new];
            vc.view.backgroundColor  = [UIColor redColor];
            UIViewController *mainVC =  [[UIApplication sharedApplication] keyWindow].rootViewController;
            [mainVC presentViewController:vc animated:YES completion:^{
                [vc dismissViewControllerAnimated:YES completion:nil];
            }];

            return;
    //...
}

MMExampleCenterTableViewController.m:

-(void)doubleTap:(UITapGestureRecognizer*)gesture{
    UIViewController *vc = [UIViewController new];
    vc.view.backgroundColor  = [UIColor redColor];
    UIViewController *mainVC =  [[UIApplication sharedApplication] keyWindow].rootViewController;
    [mainVC presentViewController:vc animated:YES completion:^{
        [vc dismissViewControllerAnimated:YES completion:nil];
    }];

    return;

    [self.mm_drawerController bouncePreviewForDrawerSide:MMDrawerSideLeft completion:nil];
}
于 2014-03-04T15:19:00.687 回答
0

最后,问题是我在mainViewController上应用了插入约束。

在幕后,我认为该方法presentViewController:animated:completion:使用框架而不是 AutoLayout,这会破坏mainViewController中的UIView那些。UIViewController

感谢@simalone,我用同样的方法找到了问题的根源(使用MMDrawerController示例项目)。

我想测试自己的问题,我上传了带有问题的示例项目,以便您理解它。该行有一个断点,这是错误的起源。然后只需双击视图。

再次感谢@simalone。干杯!

于 2014-03-04T16:09:16.843 回答