UINavigationController是一个用来表示不同视图之间从属关系的控件,UINavigationController通过维护一个栈,来实现不同具有从属(父子)关系的视图的切换。
UINavigationController不属于控件,他继承于viewController,是一个集合了navigationBar、navigationView等的控制器。
UINavigationController的工作原理:
IOS开发之导航控制器UINavigationController
上图显示了导航控制器的流程。最左侧是根视图,当用户点击其中的General项时,General视图会滑入屏幕;当用户继续点击Auto-Lock项时,Auto-Lock视图将滑入屏幕。相应地,在对象管理上,导航控制器使用了导航堆栈。根视图控制器在堆栈最底层,接下来入栈的是General视图控制器和Auto-Lock视图控制器。可以调用pushViewControllerAnimated:方法将视图控制器推入栈顶,也可以调用popViewControllerAnimated:方法将视图控制器弹出堆栈。
UINavigationController的构成:
IOS开发之导航控制器UINavigationController
通过上图,UINavigationController由Navigation bar ,Navigation View,Navigation toobar等组成。
UINavigationController的创建:
正常情况下要求程序一运行界面就显示导航条,一般把在AppDelegate里面添加代码!
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization afterapplication launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
//创建并初始化UINavigationController
UINavigationController*navigation=[[UINavigationControlle
alloc]initWithRootViewController:self.viewController];
self.window.rootViewController= navigation;//将UINavigationController设置为根控制器增加到windows上来
[self.window makeKeyAndVisible];
return YES;
}
IOS开发之导航控制器UINavigationController
UINavigationController的一些常用属性:
(1)、 设置当前页面导航栏的标题文字
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title=@"导航栏";
}
IOS开发之导航控制器UINavigationController
(2)、改变导航栏的背景颜色
navigation.navigationBar.tintColor=[UIColor redColor];
IOS开发之导航控制器UINavigationController
(3)、改变导航栏的背景图片
[navigation.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bg"] forBarMetrics:UIBarMetricsDefault];
IOS开发之导航控制器UINavigationController
UINavigationController的使用:
UINavigationController本身会自动进行入栈,出栈的相关操作,进入到新的视图的同时, UINavigationController会自动添加左边返回按钮用以返回了一个视图。
//入栈操作
UIViewController *aviewC=[[UIViewController alloc]init];
[self.navigationController pushViewController:aviewC animated:YES];
//出栈操作
//把当前的视图pop出去,当然根视图不行
[self.navigationController popViewControllerAnimated:YES];
未完待续。。。
IOS开发之导航控制器UINavigationC…
最新推荐文章于 2023-03-10 15:12:17 发布