一、UINavigationController & UITabBarController
1、pushViewController
其是UINavigationController的一个方法,UINavigationController是导航栏控制器, navigation是一个栈,通过pushViewController,popViewController进行UIViewController间的视图切换,push之后会导航栏中自动增加back按钮,点击按钮响应的动作为返回,一般不需要写返回方法。
2、presentViewController
其是UIViewController的一个方法,对应的消失方法是dismissViewController
二、UIViewController
导航栏push一个viewController的view相关设置
1、extendedlayout
设置view的top是否扩展包括navigationcontroller的部分
typedefNS_OPTIONS(NSUInteger, UIRectEdge) {
UIRectEdgeNone=0,
UIRectEdgeTop=1<<0,
UIRectEdgeLeft=1<<1,
UIRectEdgeBottom =1<<2,
UIRectEdgeRight=1<<3,
UIRectEdgeAll=UIRectEdgeTop|UIRectEdgeLeft|UIRectEdgeBottom|UIRectEdgeRight
}
2、automaticallyAdjustsScrollViewInsets
这个属性用于设置当view是scrollview和tableview情况,通常情况下希望scrollview或tableview显示navigationbar的下方
若通过设置edgesForExtendedLayout = UIRectEdgeNone或者self.navigationController.navigationBar.translucent = no,可以让view的布局从uinavigationbar的下方开始,不过会有当view滑动时,其无法占据全屏
因此可以设置 self.automaticallyAdjustsScrollViewInsets = yes 达到此需求
3、extendedLayoutIncludesOpaqueBars
如果状态栏是不透明的,那么页面的布局默认是不会包含状态栏的,除非将这个属性设置成为YES。所以如果你的页面扩展到Navigation Bar (edgesForExtendedLayout=UIRectEdgeAll),要是这个属性设置成NO (default), 如果状态栏是不透明的话,页面是不会扩展到状态栏的