presentModalViewController无法正常工作

ryy*_*yst 6 iphone uiviewcontroller

这是我的代码:

ViewController *vc = [[ViewController alloc] initWithNibName:@"TableView" bundle:nil];
[self.navigationController presentModalViewController:vc animated:YES];
//[self setView:[vc view]];
Run Code Online (Sandbox Code Playgroud)

如果我打电话给它,没有任何反应.但是,如果我将其更改为:

ViewController *vc = [[ViewController alloc] initWithNibName:@"TableView" bundle:nil];
//[self.navigationController presentModalViewController:vc animated:YES];
[self setView:[vc view]];
Run Code Online (Sandbox Code Playgroud)

视图看起来很好(当然没有过渡).我究竟做错了什么?初始化视图控制器时是否有任何特殊需要处理?我试图从Apple的例子中尽可能多地复制,但我无法让它工作......

感谢您的任何意见!

- Ry

Ben*_*ieb 24

您只能从已经在屏幕上显示的控制器(通常通过UINavigationController或UITabBarController)呈现模态视图控制器.尝试创建一个UINavigationController,将viewController推送到它,然后呈现你的模态控制器.Xcode中有一个初学者项目,它展示了如果您不熟悉它,如何创建基于UINavigationController的流程.

另外需要注意的一点是:如果你没有将视图控制器推送到UINavigationController,那么.navigationController属性将为nil,并且它的消息传递将不起作用.

  • 人们在这里浏览的另一件事:您可能需要移动代码以从viewDidLoad呈现VC:to viewDidAppear:animated:.我认为这是因为viewDidLoad中的视图尚未显示在屏幕上. (13认同)
  • @TomH,谢谢你的建议.它对我帮助很大 - 确实模型视图控制器必须在viewDidAppear中显示,而不是viewDidLoad! (3认同)
  • @Tomh:你救了我的一天. (2认同)