2

我想知道presentModalViewController和navigationController

[self presentModalViewController:controller animated:YES];

[self.navigationController pushViewController:controller animated:YES]; 

我都用了,但仍然不知道或注意到的差异之间的差异。何时应该使用其中之一?

谢谢..

+1

Apple开发者文档摘要:通常,应用程序使用模态视图控制器作为临时中断,以便从用户获取关键信息。导航控制器用于管理分层数据的表示。或者是你的问题“幕后发生了什么?” – wegginho 2011-04-20 09:52:15

+0

所以我可以说,如果我想显示当前的不同视图,并返回到当前视图,那么我应该使用presentModalViewController? – Maulik 2011-04-20 10:17:40

+0

如果不同意味着“你想用这张图片做什么? - >上传 - >删除 - >取消”这个问题,那么在你回到你的照片后,是的。 – wegginho 2011-04-20 10:21:12

回答

2

呈现模态的视图被呈现于另一视图的顶部的视图。您通常执行那些需要以独立方式启动和完成的“任务”。阅读苹果开发者指南上的模态视图。

在应用程序中存在导航的逻辑需求时,将导航视图添加到导航控制器是不同的。请在iDevices的设置应用程序中向下钻取表格,其中有主要设置,然后深入到子设置等。

无论您的问题是什么,如果它们是概念性和泛型的,我强烈建议你到google了“X编程指南”将带你到正确的苹果的编程指南:) X =视图控制器,你的情况

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

3

基本区别:

pushViewController只能在个导航控制器

presentModalViewController作品所有视图控制器

navigationController是你UINavigationController,这是在你的导航堆栈(UIViewController)用于所有的控制器的实例。

2

如果基类有它自己的NavigationController那么你可以这样写:

[self.navigationController pushViewController:objMyViewController animated:YES]; 

如果你的基类只有UIViewController的再使用:

MyViewController * objMyViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:objMyViewController]; 
navController.navigationItem.leftBarButtonItem = nil; // make nil if you want 
                 // to use it in next View 
[self presentModalViewController:navController animated:YES]; 

现在,MyViewController有导航,所以你可以 - 通过在MyViewController中编写函数,可以推送另一个viewController。

-(IBAction)btnNext_click { 
    SecondViewController * objSecondViewController = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil]; 
    [self.navigationController pushViewController:objSecondViewController animated:YES]; 
} 
+0

但第二个视图将显示在模态视图控制器后面 – 2cupsOfTech 2013-07-11 07:06:47