Cocoa编程中视图控制器与视图类详解
iPhone编程规则是:一个窗口,多个视图。UIView是iPhone屏幕上很多控件的基础类。每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView及其专门化子类构建的。
显示数据的视图:
可选择的视图(以下两个视图类实例都是模态显示的):
所有控件(控件是将用户触摸转换为回调触发器的屏幕对象。):
表格和拾取器:
各种栏样式:
在所有iPhone栏样式视图中,只有UIToolBar类可以直接使用。其它三个都是通过对应的控制器类来完成工作,而不是直接构建和管理视图。?
进度与活动:
?
?
控制器类
?
UIViewController类
? ? ? UIViewController负责创建其管理的视图及在低内存的时候将它们从内存中移除。还为标准的系统行为进行响应。从语法上说,UIViewController是视图控制器的父类。视图控制器类是没有可视化表示的抽象类,只有它管理的视图才提供可视画布。记住:1. 视窗UIWindow虽然也是UIView,但不能用处理普通UIView的方式来设置; 2. UIView视图使用initWithFrame:初始化,而其UIViewController则使用init类方法直接初始化。3. UIViewController实例负责设置视图的外观和它显示的子视图。
?
UINavigationController类
1. 导航控制器使用内置动画在视图之间切换; 2. 导航控制器自动构建并处理Back按钮; 3. 导航控制器提供简单的菜单栏可帮助用户进行自定义控件。4. 每一个导航控制器都拥有一个根视图控制器RootViewController,它是“导航弹出栈”的基础,是根。5. 通过调用initWithRootViewController:方法可以将特定控制器设置为根。如常见的:
?
UINavigationController如何推入和弹出视图控制器?
?
1. 使用pushViewController: animated:可推入一个新的控制器,从而增加新的项到导航栈。(记住:导航栏控制器不添加一个视图进去,这个导航栏是没有意义的!)
?代码二我们也可以直接在具体的视图控制器内部重写init方法。
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{ // 捕捉selectedIndex,可确定当前所选选项卡 NSNumber *tabNumber = [NSNumber numberWithInt:[tabBarController selectedIndex]]; // 使用iPhone内置用户默认系统NSUserDefaults,利用setObject:forKey:为关键字设定值 [[NSUserDefaults standardUserDefaults] setObject:tabNumber forKey:@"selectedTab"]; [[NSUserDefaults standardUserDefaults] synchronize]; // 选项卡图标项右上角红色小红圈数字提示 viewController.tabBarItem.badgeValue = [NSString stringWithFormat:@"%d",80];}?来源:http://www.cnblogs.com/lovecode/archive/2012/01/03/2310866.html
?
?
?
?