很多时候,喜欢用到一个知识,就要将它的原理搞清楚。
昨天,搞了很久才搞定UINavigationController相关的一个功能。
发现网上对UINavigationController讲解的很少,虽然,苹果官方有说明,但是都是英文的。而且长篇大论的,总希望能够“刨根问底”!
于是,写下来mark一下!
在开始之前,首先做一个程序的框架:
1.用UITabBarController+UINavigationController制作一个原生态的程序框架
@interface AppDelegate : UIResponder <</span>UIApplicationDelegate>{
}
@property (nonatomic, retain) UIWindow *window; @property (strong, retain) UITabBarController *tabBarController;
@property (strong, retain) UINavigationController *navSquareController; @property (strong, retain) UINavigationController *navMoreController; @property (strong, retain) UINavigationController *navSelfInfoController; @property (strong, retain) UINavigationController *navShootController; @property (strong, retain) UINavigationController *navVideoController;
@end
-
(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOp {
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navSquareController,navVideoController,navShootController,navSelfInfoController,navMoreController, nil];
}
这个是原生态的一个框架。可以来做应用程序的公用框架! 我们的程序一般都是这样!经典啊! 运行如下: 于是,要问:为什么第一个页面要显示navSquareController?
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navSquareController,navVideoController,navShootController,navSelfInfoController,navMoreController, nil]; 我们将navSquareController排在数组第一个元素,所以,默认显示navSquareController
为什么navSquareController又显示的是squareViewController?
navSquareController=[[UINavigationController alloc] initWithRootViewControll squareViewController作为navSquareController的根视图控制器! 因为我们还没有对navSquareController进行任何pushViewController操作,所以,默认显示的是squareViewController。 做了这么多准备工作,现在可以切入正题!
1.什么是UINavigationController?
UINavigationController继承自UIViewController。 UINavigationController管理栈中的视图控制器UIViewController(多个),和一个UINavigationBar和一个可选的UIToolbar; 负责管理多个UIViewController之间的水平方向的push(压入)和pop(弹出),并且同步修改其UINavigationBar
一句话:UINavigationController是用来管理多个UIViewController之间的导航控制和显示UINavigationBar
最后,附上苹果帮助文档中的,关于UINavigationController的结构图: 关于UINavigationController一目了然!
希望对你有所帮助!
|
|