我想知道两者之间的区别
[self presentModalViewController:controller animated:YES];
和
[self.navigationController pushViewController:controller animated:YES];
我都使用过,但仍然不知道或注意到其中的区别。什么时候应该使用其中之一?
谢谢..
我想知道两者之间的区别
[self presentModalViewController:controller animated:YES];
和
[self.navigationController pushViewController:controller animated:YES];
我都使用过,但仍然不知道或注意到其中的区别。什么时候应该使用其中之一?
谢谢..
基本区别:
pushViewController
仅适用于导航控制器
presentModalViewController
适用于所有视图控制器
navigationController是您的实例,UINavigationController
导航堆栈 ( UIViewController
) 中的所有控制器都使用它。
呈现模态视图是在另一个视图之上呈现一个视图。您通常执行那些需要以自包含方式开始和完成的“任务”。进一步阅读苹果开发者指南上的模态视图。
将视图推送到导航控制器是不同的,在应用程序中有逻辑需要导航的情况下。在 iDevices 的设置应用程序中说一个向下钻取表,其中有主要设置,然后向下钻取到子设置等。
无论您的问题是什么,如果它们是概念性的和通用的,我强烈建议您搜索“X 编程指南”,它将带您到正确的 Apple 编程指南 :) X = 视图控制器在您的情况下
如果基类有它自己的 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 中编写如下函数来推送另一个视图控制器。
-(IBAction)btnNext_click {
SecondViewController * objSecondViewController = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:objSecondViewController animated:YES];
}