iOS presentViewController视图控制器未完全加载

时间:2013-08-02 12:58:53

标签: ios uiviewcontroller presentmodalviewcontroller

使用以下代码:

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。

感谢您的帮助!

4 个答案:

答案 0 :(得分:3)

您的问题是您正在尝试创建UINavigationController,同时将其用作UINavigationController rootviewcontroller。修复此行:

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

到此:

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

尝试添加您访问该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的视图的问题。如果我发布的内容不起作用,则问题出在其他地方。 试试吧,告诉现在是否可以。 :)

答案 3 :(得分:0)

行。每个人都得到一个答案,因为他们对我都有帮助。

LucOlivierDB获得了复选标记,因为这对我来说只是一个愚蠢的事情。

!!注:!!因为它证明了我的真正问题是这行代码:

self.view.backgroundColor = [UIColor clearColor];

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