当前位置: 代码迷 >> Iphone >> iphone停的多视图 -xcode3.1实现
  详细解决方案

iphone停的多视图 -xcode3.1实现

热度:158   发布时间:2016-04-25 06:39:25.0
iphone下的多视图 --xcode3.1实现

苹果电脑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];

}

?

?

?

?

?

?

  相关解决方案