【问题标题】:iOS presentViewController View Controller not Fully LoadingiOS presentViewController 视图控制器未完全加载
【发布时间】:2013-08-02 12:58:53
【问题描述】:

使用以下代码:

MyModalViewController *mMVC = [[MyModalViewController alloc] init];
UINavigationController *mMNavVC = [[UINavigationController alloc] initWithRootViewController:mMNavVC];
mMNavVC.navigationBar.barStyle = UIBarStyleBlackOpaque;
[[[appdelegate window] rootViewController] presentViewController:mMNavVC animated:YES completion:nil];
[mMVC release];
[mMNavVC release];
//(Yes we are not using ARC yet - kills me)

视图呈现,但在完全滑到顶部之前它不会加载。导航控制器确实加载正确,您会看到它一直向上滑动。然而,它只是一个框架。换句话说,当导航控制器向上滑动到位时,您可以看到呈现视图控制器 - 然后 mMVC 加载。

感谢您的帮助!

【问题讨论】:

    标签: ios uiviewcontroller presentmodalviewcontroller


    【解决方案1】:

    您的问题是您尝试创建 UINavigationController,同时将其用作 UINavigationController rootviewcontroller。修复这条线:

    UINavigationController *mMNavVC = [[UINavigationController alloc] 
    initWithRootViewController:mMNavVC];
    

    到这里:

    MyModalViewController *mMVC = [[MyModalViewController alloc] init];
    UINavigationController *mMNavVC = [[UINavigationController alloc]   initWithRootViewController:mMVC];
    

    将在显示之前加载模态视图控制器。

    【讨论】:

      【解决方案2】:
      MyModalViewController *mMVC = [[MyModalViewController alloc] init];
      UINavigationController *mMNavVC = [[UINavigationController alloc] initWithRootViewController:mMNavVC];
      mMNavVC.navigationBar.barStyle = UIBarStyleBlackOpaque;
      [[[app window] rootViewController].navigationController pushViewController: mMNavVC animated:YES];
      [mMVC release];
      [mMNavVC release];
      

      【讨论】:

      • 我不认为他想改变他的窗口的 rootViewController。
      • @johnyu- OP 有导航控制器,所以 presentView 不适合他
      • 但是他有一个导航控制器,他正试图以模态方式呈现。根视图控制器上没有导航控制器。还有,如果一开始有导航控制器,不应该是rootViewController吗?
      【解决方案3】:

      尝试在访问该 vc 视图的位置添加一行,即

      MyModalViewController *mMVC = [[MyModalViewController alloc] init];
      UINavigationController *mMNavVC = [[UINavigationController alloc] initWithRootViewController:mMNavVC];
      mMNavVC.navigationBar.barStyle = UIBarStyleBlackOpaque;
      mMVC.view.backgroundColor = [UIColor whiteColor];
      [[[appdelegate window] rootViewController] presentViewController:mMNavVC animated:YES completion:nil];
      [mMVC release];
      [mMNavVC release];
      

      对于在调用 navigationController 的 viewDidAppear 方法之前没有加载 viewController 的视图的问题,这是一种解决方法。如果我发布的内容不起作用,则问题出在其他地方。 试一试,看看现在是否可以。 :)

      【讨论】:

        【解决方案4】:

        好的。每个人的回答都会得到 1up,因为他们都对我有帮助。

        LucOlivierDB 得到复选标记,因为这对我来说只是一件愚蠢的事情,我没有看到。

        !!注意:!!事实证明我真正的问题是这行代码:

        self.view.backgroundColor = [UIColor clearColor];
        

        有人认为通过使视图透明来让所有视图继承背景会很聪明。因此,当它绘制视图时,它是透明的。由于在模态操作完成之前不认为绘制完成,您可以在此之前看到它下方的视图。 多谢你们。你的电话让我思考和学习!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-18
          • 2014-08-12
          • 2014-08-24
          相关资源
          最近更新 更多