您好,欢迎访问一九零五行业门户网

UI开发UINavigationController和页面间传值_html/css_WEB-ITnose

//  created by 郭仔  2015年04月21日22:52:59
// ===================================================
人生最痛苦的事情莫过于该交房租了!!!!!!!
// ===================================================
uinavigationcontroller:
导航控制器,是ios中最常?用的多视图控制器
之?一,它?用来管理多个视图控制器。
导航控制器可以认为是管理控制器的控制器,主要管理有层级关系的
控制器。
uinavigationcontroller继承于uiviewcontroller,以栈的?方式管理所
控制的视图控制器,?至少要有?一个被管理的视图控制器,这个控制器
我们称作,导航控制器的根视图控制器。
任何继承?自uiviewcontroller的类(多态)都可以作为根控制器。
// =========
工作原理:
uinavigationcontroller通过栈的?方式管理控制器的切换,控制?入栈和出栈
来展?示各个视图控制器。 uinavigationcontroller的contentview?里始终显?示栈顶控制器的view。
viewcontrollers属性存储了栈中的所有被管理的控制器
navigationcontroller属性,?父类中的属性,每个在栈中的控制器,都能通 过此属性,获取?自?己所在的uinavigationcontroller对象。
实现页面间的跳转:
pushviewcontroller:animated //进?入下?一个视图控制器 
popviewcontrolleranimated: //返回上?一个视图控制器 
poptoviewcontroller:animated //返回到指定的视图控制器 
poptorootviewcontrolleranimated //返回到根视图控制器
常用属性:
viewcontrollers //所有处于栈中的控制器 
topviewcontroller //位于栈顶的控制器 
visibleviewcontroller //当前正在显?示的控制器 
navigationbar //导航条
// =====================
向下跳:
secondviewcontroller * secondvc = [[secondviewcontroller alloc]init]; [self.navigationcontroller pushviewcontroller:secondvc animated:yes];
向上跳:
// [self.navigationcontroller popviewcontrolleranimated:yes]; // [self.navigationcontroller poptorootviewcontrolleranimated:yes]; secondviewcontroller * secondvc = [self.navigationcontroller.viewcontrollers objectatindex:0]; [self.navigationcontroller poptoviewcontroller:secondvc animated:yes];
uinavigationbar:
navigationbar?导航条,ios7之后默认是透明的,ios7之前默认是不
透明的。 navigationbar在透明情况,与contentview会重合?一部分区域。
navigationbar在不透明情况,contentview跟在navigationbar的下?面。 navigationbar竖屏下默认?高度44,横屏下默认?高度32.
uinavigationbar除了能定义?自?身的样式外,还管理?一组
uinavigationitem。 与uinavigationcontroller相似,uinavigationbar也是以栈的?方式管
理?一组uinavigationitem。提供push和pop操作item。
每个视图控制器都有?一个navigationitem属性。navigationitem中设 置的左按钮、右按钮、标题等,会随着控制器的显?示,也显?示到 navigationbar上;
//====================
uinavigationitem:
uinavigationitem属于mvc中的m。封装了要显?示在uinavigationbar上
的数据。
uibarbuttonitem属于mvc的m。定义了uinavigationitem上按钮的触
发事件,外观等
-initwithbarbuttonsystemitem:target:action:
-initwithtitle:style:target:action: -initwithimage:style:target:action: tintcolor;
// =================
rootviewcontroller * rootvc = [[rootviewcontroller alloc]init]; uinavigationcontroller * nvc = [[uinavigationcontroller alloc]initwithrootviewcontroller:rootvc]; // nvc.navigationbar.backgroundcolor = [uicolor redcolor]; // nvc.navigationbar.tintcolor = [uicolor redcolor]; nvc.navigationbar.translucent = yes; nvc.navigationbar.barstyle = uibarstyleblack; uiimage * image = [uiimage imagenamed:@bd_logo1.png]; [nvc.navigationbar setbackgroundimage:image forbarmetrics:uibarmetricsdefault];
// ========
uiview * view = [[uiview alloc]init]; view.frame = cgrectmake(0, 200, 20, 20); view.backgroundcolor = [uicolor browncolor]; self.navigationitem.title = @郭仔; self.navigationitem.titleview = view; [view release]; uibarbuttonitem *btnitem = [[uibarbuttonitem alloc]initwithbarbuttonsystemitem:uibarbuttonsystemitembookmarks target:self action:nil]; self.navigationitem.rightbarbuttonitem = btnitem; [btnitem release]; uiimage * img = [[uiimage imagenamed:@4.png]imagewithrenderingmode:uiimagerenderingmodealwaysoriginal]; uibarbuttonitem * leftimage = [[uibarbuttonitem alloc]initwithimage:img style:uibarbuttonitemstylebordered target:self action:nil]; self.navigationitem.leftbarbuttonitem = leftimage;
// ===========
页面传值:
一种是属性传值;
一种是代理传值;
/*
属性传值:如果从a页面往b页面传值,在b页面中声明属性,在a页面中跳转事件中给b页面的属性赋值;
从后一个页面返回前一个页面不会执行前面页面的loadview和viewdidload方法,而是执行viewwillappear方法,因为,loadview和viewdidload方法的作用是将视图加载到内存,而从后一个页面返回时,前一个页面已经加载到内存,所以不用再次加载,所以不执行loadview和viewdidload方法;
*/
代理传值:
和代理设计模式一样,按照设置代理,遵循协议的那四步来就行,这里有介绍:
// =======================================
一天中最享受的时光便是晚上在高速路上骑行,hello 京藏高速~~~~~~~~~
其它类似信息

推荐信息