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

本文介绍iOS应用中如何使用视图控制器管理不同视图的显示与切换,包括创建应用程序的基本结构、视图的添加与移除、响应用户交互事件等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值