2014-03-03 63 views
1

我的問題是當我提出一個UIViewController呈現視圖變黑。介紹一個ViewController打破以前的ViewController

我有一個UIViewController名爲mainViewController這是我的窗口的根視圖。 裏面我有一個MMDrawerController(只是作爲mainViewController視圖的子視圖添加)。

MMDrawerController包含我的其他觀點。

但是當我從我的mainViewController提出一個新的UIViewController時,新的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]; 

Souce code of MMDrawerController這是最新的,在我的項目

+0

你在爲什麼版本的iOS?你有沒有考慮使用故事板,而不是創建在代碼中分配你的rootViewController? –

+0

@AshleyMills我爲iOS 6和7構建,我沒有在iOS6上嘗試這個問題,它發生在iOS7上(我最關心的是......)。 我從來沒有在所有應用程序中使用IB(並且不會使用,它不應該與解決方案有關)。 – AncAinu

+0

我使用您編寫的代碼在新項目中進行了測試,但mainViewController保持爲backgroundcolor – simalone

回答

0

最後,問題是,我申請我mainViewController插圖約束。

幕後我假定方法presentViewController:animated:completion:使用框架,而不是自動版式,這打破UIViewController是在mainViewControllerUIView

感謝@simalone,我用相同的方式找到問題的根源(使用MMDrawerController示例項目)。

我想要測試自己的問題,I uploaded the example project with the issue所以你可以理解它。 錯誤的起源有一個斷點。 然後只需雙擊視圖。

再次感謝@simalone。乾杯!

+0

不客氣。 – simalone

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]; 
} 
+0

你把我放在正確的方向花花公子。我發現了這個問題。 – AncAinu

相關問題