苹果电脑os是Mac os 而ipone操作系统是ios,都是基于unix内核开发的独立的操作系统。
xcode3.1下windows 框架,必须有一个root view来控制下面所有子view的切换
UIApplication接收到所有的系统事件和生命周期事件时,都会把事件传递给UIApplicationDelegate进行处理,对于用户输入事件,则传递给相应的目标对象去处理。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
UIView提供了很多建立和管理视图的方法。
1、添加视图
insertSubview:atIndex: //放在子视图数组的具体索引位置
insertSubview:aboveSubview: //某个子视图前面
insertSubview:aboveSubview: //某个子视图前面
2、重新排序和删除子视图
[parentView exchangeSubviewAtIndex:i withSubviewAtIndex:j]//交换两个视图的位置
bringSubviewToFront:和sendSubviewToBack://将子视图提前活置后
[childView removeSuperview]//删除某个视图的子视图
3、视图回调
某个视图的层次一改变,该视图就会收到一次回调。
a、调用addSubivew:成功后会给该视图发送didAddSubivew:回调,触发UIView的子类在心增视图时执行其他操作。
b、didMoveToSuperview:会通知相关视图他们的上级视图已经变化。
c、视图移动前会发出willMoveToSuperview:回调
d、didMoveToWindow:回调和didMoveToSuperview:相似,从命名上能看出其区别。
e、willMoveToWindow:在视图移动前发出的回调。
f、willRemoveToSubview:回调通知父视图子视图即将被删除
UIView掌管直接屏幕绘图。他的drawRect:方法提供一种低级方式来直接绘制内容,允许使用Quartz 2D调用创建和显示任意元素,可将这两个元素结合起来共同构建具体、可操作的界面。
当用户触摸屏幕时,Touchview类收集一系列点,在每个触摸移动之处,touchesMoved:WithEvent:方法调用setNeedsDisplay。这又会触发对drawRect:方法的调用,其中视图将这些点绘制成线段来创建一个可视屏幕路径。
/////////////////////////////////////////////////////////////////////////////////////////////////
先创建一个windows应用程序
1 ) 添加rootviewController类、mainview,editview类都是viewcontroller的派生类。
2)修改程序委托 XXXdelegate.h,先把启动画面从window,改为给window添加的子视图---根视图对象
#import <UIKit/UIKit.h>
@class RootViewControler;
@interface XXXAppdelegate:NSObject<UIApplicationDegate>{
UIWindow * window;
RootViewController * rootview;
}
@property (nonatomic, retain) IBoutlet UIWindow * window;
@property (nonatomic,retain) IBoutlet RootViewController * rootview;
@end;
在委托的实现文件XXXAppdelegate.m添加
- (void) appliccationDidFinishLaunching:(UIApplication*)application{
[window addSubView:rootview.view];
[window makeKeyAndVisible];
}
- (void)dealloc
{
[window release];
[rootview release];
[super dealloc];
}
3.在IB下添加实例对象
打开mainwindow.xib然后拖拉一个UIViewController到上面生成一个图标,并且在苹果+4打开的identity修改UIViewController类为RootViewController类则表示生成了一个根控制器的实例对象,然后再通过应用程序委托的输出口连接到该实例对象。按住control键并拖拉应用程序委托对象拖到刚生成的视图对象,然后再选择rootview输出口。
4)在IB下,在UIVewController窗口里添加一个view对象。然后才能拖放控件。
5) 视图的层次关系是RootViewController下有2个子视图MainViewController,EditViewController,子视图之间可以互相切换。
6)RootViewControlle下添加2个子视图
#import<UIKit/UIKit.h>
@class MainVewController;
@class EditViewController;
@interface RootViewController:UIViewController
{
MainViewController * _rootView;
EditViewController * _editView;
}
@property (nonatomic, retain) RootViewController * _rootView;
@property(nonatomic, retain) EditViewController * _editView;
@end
#import "RootViewController.h"
#import "MainViewController.h"
#import "EditViewController.h"
@implements RootViewController;
@synthesize _mainView,_editView;
-(void)viewDidLoad{
if(self._editView == nil)
{
EditViewController * editViewTemp = [[EditViewController alloc]initWithNibName:@"editview" bundle:nil];
self._editView = editViewTemp;
[self.veiw insertSubView:self._editView.view atIndex:0];//记住edit索引为0
//注意不要释放editViewTemp对象
}
if(self._mainView == nil)
{
MainViewController * mainViewTemp = [[MainViewController alloc]initWithNibName:@"mainview" bundle:nil];
self._mainView = mainViewTemp;
[self.view addSubView:self._mainView.view];//记住main索引为1
//注意不要释放mainViewTemp对象
}
}
}
7.)在mainview.xib下点击File's Owner图标点击苹果键+4打开Main view controller identify设置class为MainViewController,将MainViewController的view输出口连接到nib中的视图对象,按住Control键拖拉File's Owner图标到nib中的视图对象,然后选择view输出口。
8.)在mainview里添加一个button然后添加事件响应btnpressed
-(IBAction)btnpressed:(id)sender
{
[ self.view.superview exchangeSubviewAtIndex:1 withSubviewAtIndex:0];//
}
9)在EditView里添加button响应事件
-(IBAction)btnpressed:(id)sender
{
[ self.view.superview exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
}