一.UINavigationController重要参数
二.创建UINavigationController
UIViewController *myViewController = [[MyViewController alloc] init];
navigationController = [[UINavigationController alloc]
initWithRootViewController:myViewController];
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
window.rootViewController = navigationController;
[window makeKeyAndVisible];
或者用nib来创建
三.全屏化UINavigationController
1.navigation bar:设置navigationController的translucent为yes
2.toolbar:设置toolbar的translucent为yes
3.设置wantsFullScreenLayout为yes
nav.navigationBar.translucent=YES;//导航栏可为内容区域,透明
nav.toolbarHidden=NO;//显示自带的toolbar
nav.toolbar.translucent=YES;//工具栏可为内容区域,透明
四.调整navigation的内容以及相关事件流
调整viewControllers调整显示界面
a)pushViewController:animated:
b)popViewControllerAnimated:
c)setViewControllers:animated:
d)popToRootViewControllerAnimated:
e)popToViewController:animated:
f)也可以直接设置viewControllers,显示的view 将会是array的lastObject
监控事件
除了controller常规的覆盖方法外,还可以使用delegate来跟踪状态
五.定义 Navigation Bar样式
1.类似navigation Controller的viewControllers的结构,Navigation Bar是包含UINavigationItem类型的数据
每个viewControllers和navigationItem的array都是平行一一对应的。比方说某个controller在viewControllers的位置和items的位置是一样的。
viewController通过navigationItem参数来获得对应的item.
navigationitem主要的参数和位置关系如下:
左:backBarButtonItem这个是在navigation controller中默认添加上去的
leftBarButtonItem:这个是custom自己的UIBarButtonItem
右:rightBarButtonItem:同样是custom自己的UIBarButtonItem
中间:titleView:用自己的custom View来显示中部分用作title.如果没有用view设置,则使用title这个String对象
详细如下图:
2.UINavigationBar参数
a)barStyle:bar的样式
b)translucent:是否透明,这样navigationBar下也显示内容
c)tintColor:背景颜色
3.NavigationBar设置viewController默认的editButton
myViewController.navigationItem.rightBarButtonItem = [myViewController editButtonItem];
五.显示Navigation ToolBar
1.toolbar的构成
每个content view controller都有对应的toolbarItems的数组,数组中放的是Toolbaritem类的实例
UIBarButtonItem *flexibleSpaceButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil action:nil];
// Create and configure the segmented control
UISegmentedControl *sortToggle = [[UISegmentedControl alloc]
initWithItems:[NSArray arrayWithObjects:@"Ascending",
@"Descending", nil]];
sortToggle.segmentedControlStyle = UISegmentedControlStyleBar;
sortToggle.selectedSegmentIndex = 0;
[sortToggle addTarget:self action:@selector(toggleSorting:)
forControlEvents:UIControlEventValueChanged];
// Create the bar button item for the segmented control
UIBarButtonItem *sortToggleButtonItem = [[UIBarButtonItem alloc]
initWithCustomView:sortToggle];
// Set our toolbar items
self.toolbarItems = [NSArray arrayWithObjects:
flexibleSpaceButtonItem,
sortToggleButtonItem,
flexibleSpaceButtonItem,
nil];
六.常用方法以及参数
UIViewController:
-(void)hidesBottomBarWhenPushed:当从navigation stack中push或者pop时,自动隐藏底部的toolbar。
参考文档
View Controller Catalog for iOS
参考代码
(苹果官方)NavBar