`
icrwen
  • 浏览: 262163 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

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];

}

 

 

 

 

 

 

分享到:
评论

相关推荐

    iPhone开发基础教程 源码

     3.1 模型-视图-控制器范型  3.2 创建项目  3.3 创建视图控制器  3.3.1 输出口  3.3.2 操作  3.3.3 将操作和输出口添加到视图控制器  3.3.4 将操作和输出口添加到实现文件  3.4 使用应用程序委托  ...

    iphone开发入门经典源码

    13.1 选项卡栏和选项卡栏控制器 13.2 创建多视图选项卡栏应用程序 13.2.1 实现概述 13.2.2 创建项目 13.2.3 添加选项卡栏控制器 13.2.4 配置视图控制器类 13.2.5 实现ArcaView视图 13.2.6 实现VolumcView视图 13.2.7...

    iPhone开发基础教程PDF(含源代码)

     第6章 多视图应用程序  第7章 标签栏与选取器  第8章 表视图简介  第9章 导航控制器和表视图  第10章 应用程序设置和用户默认设置  第11章 基本数据持久性  第12章 使用Quartz和OpenGL绘图  第13章 轻击、...

    iphone3开发基础教程

    4.3.2 实现图像视图和文本字段 43 4.3.3 添加图像视图 44 4.3.4 添加文本字段 47 4.3.5 设置第二个文本字段的属性 50 4.3.6 连接输出口 50 4.4 构建和运行 51 4.4.1 完成输入后关闭键盘 51 4.4.2 通过触摸背景关闭...

    《iPhone开发实战》.(Christopher Allen).pdf

    3.1 iphone视区23 3.1.1 更改整站视区24 3.1.2 更改局部视区24 3.1.3 视区属性和常量25 3.2 实现“iphone友好的”网页26 3.2.1 避免缺少iphone功能26 3.2.2 创建链接28 3.2.3 web开发中的良好习惯28 ...

    iPhone开发秘籍

    1.11 从xcode到iphone:organizer界面 24 1.11.1 projects & sources列表 25 1.11.2 devices列表 25 1.11.3 summary选项卡 25 1.11.4 console选项卡 25 1.11.5 crash logs选项卡 25 1.11.6 screenshot选项卡 ...

    iPhone开发秘籍.part2.rar

    1.11 从Xcode 到iPhone:Organizer 界面.....24 1.11.1 PROJECTS & SOURCES 列表.....25 1.11.2 DEVICES 列表.....25 1.11.3 Summary 选项卡.....25 1.11.4 Console 选项卡.....25 1.11.5 Crash Logs 选项卡.....25 ...

    iPhone开发秘籍.part4.rar

    1.11 从Xcode 到iPhone:Organizer 界面.....24 1.11.1 PROJECTS & SOURCES 列表.....25 1.11.2 DEVICES 列表.....25 1.11.3 Summary 选项卡.....25 1.11.4 Console 选项卡.....25 1.11.5 Crash Logs 选项卡.....25 ...

    iPhone开发秘籍.part1.rar

    1.11 从Xcode 到iPhone:Organizer 界面.....24 1.11.1 PROJECTS & SOURCES 列表.....25 1.11.2 DEVICES 列表.....25 1.11.3 Summary 选项卡.....25 1.11.4 Console 选项卡.....25 1.11.5 Crash Logs 选项卡.....25 ...

    Objective-C2.0程序设计

    2.1.1 使用Xcode 2.1.2 使用Terminal 2.2 解释第一个程序 2.3 显示变量的值 2.4 小结 2.5 练习 第3章 类、对象和方法 3.1 到底什么是对象 3.2 实例和方法 3.3 用于处理分数的Objective-C类 3.4 @interface部分 ...

Global site tag (gtag.js) - Google Analytics