关于ios导航控制器的知识总结
添加了导航控制器后:
1.每个页面都会有一个顶部导航栏navigationbar和底部工具栏toolbar,它们是导航控制器navC的属性。且导航栏默认是不隐藏的,而底部工具栏默认是隐藏的。
2.可以通过设置 self.navigationController.toolbarHidden = NO来显示底部工具栏,工具栏中的内容可以通过viewController的toolbarItems来设置,显示的顺序和设置的NSArray中存放的顺序一致,其中每一个数据都一个UIBarButtonItem对象。
3.导航控制器的导航栏navigationbar和工具栏toolbar上的导航按钮navigationItem和toolbarItems却是当前页面视图控制器VC的属性。特别注意:下一个页面的左侧Back按钮名称是由当前页面的backBarButtonItem来设置。只能设置名称,不能设置形状。如果下个VC设置了leftBarButtonItem,则本页面设置backBarButtonItem无效,会被下个页面的左按钮覆盖掉。
4. 下一个页面的左侧Back按钮的名称是由上一个控制器backBarButtonItem来设置的。如果上一页面没有设置backBarButtonItem按钮的名称,则默认显示为Back。但是若上页面有设置navigationItem.title属性,则显示该title。如果上一页面设置的是navigationItem.titleView,则下一页面左侧仍显示默认的Back.
5.导航控制器会有一个viewControllers属性,其中的VC是以栈的形式组织的,当pushViewController或者addChildViewController或者直接添加到数组navC2.viewControllers = @[vc1,vc2,vc3]; 因为会新出现一个页面,在push,add之前需要创建好对应VC的对象。当使用popToViewController时,栈顶的VC都会被销毁(如不想被销毁,需给它一个强引用即可),返回到的那一页并不需要新创建pop到的VC的对象,因为之前使用push时,它被压入栈底,并不会被销毁。
6. 转载一篇不错的文章《UINavigationController使用详解》,大家一起学习。