先上流程图

一,首先在.h中声明UIViewController类属性

//界面
@property(nonatomic,strong)UIView *mainScene;
@property(nonatomic,strong)UIView *aboutScene;
@property(nonatomic,strong)UIView *editScene;
@property(nonatomic,strong)UIView *lineColorScene;
@property(nonatomic,strong)UIView *bgColorScene;
@property(nonatomic,strong)UIView *lineWidthScene;
@property(nonatomic,strong)UIView *detailScene;
二,在.m文件中做好初始化和框架

//七大视图作为本类的属性,便于在类的内部调用
//视图加载完后,添加7大视图容器
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self.view addSubview:self.mainScene];
    [self.view addSubview:self.aboutScene];
    [self.view addSubview:self.editScene];
    [self.view addSubview:self.lineColorScene];
    [self.view addSubview:self.bgColorScene];
    [self.view addSubview:self.lineWidthScene];
    [self.view addSubview:self.detailScene];
}

//当根视图将要显示时会触发这个方法
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    //将首页提前
    [self.view bringSubviewToFront:self.mainScene];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark -property methods
-(UIView *)mainScene
{
    //如果不等于空 则实例化场景
    if (_mainScene!=Nil) {
        return _mainScene;
    }
   
    _mainScene=[[UIView alloc]initWithFrame:self.view.bounds];
    _mainScene.backgroundColor=[UIColor whiteColor];
    //实例化测试控制按钮
    CGRect frame=CGRectMake(0, 100, 320, 60);
    UISegmentedControl *testControl=[[UISegmentedControl alloc]initWithFrame:frame];
    testControl.momentary=YES;
    [testControl insertSegmentWithTitle:@"About" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"Drawing" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"New" atIndex:0 animated:NO];
    testControl.tag=KMainSceneTestControlTag;
    //添加测试按钮触发的测试方法
    [testControl addTarget:self action:@selector(testSegue:) forControlEvents:UIControlEventValueChanged];
    [_mainScene addSubview:testControl];
    return _mainScene;
}

-(UIView *)aboutScene
{
     //如果不等于空 则实例化场景
    if (_aboutScene!=Nil) {
        return _aboutScene;
    }
    _aboutScene=[[UIView alloc]initWithFrame:self.view.bounds];
    _aboutScene.backgroundColor=[UIColor whiteColor];
    
    CGRect frame=CGRectMake(0, 100, 320, 60);
    UISegmentedControl *testControl=[[UISegmentedControl alloc]initWithFrame:frame];
    testControl.momentary=YES;
    [testControl insertSegmentWithTitle:@"" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"Drawing" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"Back" atIndex:0 animated:NO];
    testControl.tag=KAboutSceneTestControlTag;
    //添加测试按钮触发的测试方法
    [testControl addTarget:self action:@selector(testSegue:) forControlEvents:UIControlEventValueChanged];
    [_aboutScene addSubview:testControl];
    return _aboutScene;
}

-(UIView *)editScene
{
    //如果不等于空 则实例化场景
    if (_editScene!=Nil) {
        return _editScene;
    }
    _editScene=[[UIView alloc]initWithFrame:self.view.bounds];
    _editScene.backgroundColor=[UIColor grayColor];
    
    CGRect frame=CGRectMake(0, 100, 320, 60);
    UISegmentedControl *testControl=[[UISegmentedControl alloc]initWithFrame:frame];
    testControl.momentary=YES;
    [testControl insertSegmentWithTitle:@"背景" atIndex:0 animated:NO];
     [testControl insertSegmentWithTitle:@"画笔颜色" atIndex:0 animated:NO];
     [testControl insertSegmentWithTitle:@"画笔大小" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"Back" atIndex:0 animated:NO];
    testControl.tag=KEditSceneTestControlTag;
    //添加测试按钮触发的测试方法
    [testControl addTarget:self action:@selector(testSegue:) forControlEvents:UIControlEventValueChanged];
    [_editScene addSubview:testControl];

return _editScene;
}

-(UIView *)lineColorScene
{
      //如果不等于空 则实例化场景
    if (_lineColorScene!=Nil) {
        return _lineColorScene;
    }
    _lineColorScene=[[UIView alloc]initWithFrame:self.view.bounds];
    _lineColorScene.backgroundColor=[UIColor blueColor];
    
    CGRect frame=CGRectMake(0, 100, 320, 60);
    UISegmentedControl *testControl=[[UISegmentedControl alloc]initWithFrame:frame];
    testControl.momentary=YES;
    [testControl insertSegmentWithTitle:@"完成" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"画笔颜色" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"取消" atIndex:0 animated:NO];
    testControl.tag=KLineColorSceneTestControlTag;
    //添加测试按钮触发的测试方法
    [testControl addTarget:self action:@selector(testSegue:) forControlEvents:UIControlEventValueChanged];
    [_lineColorScene addSubview:testControl];

return _lineColorScene;
}

-(UIView *)bgColorScene
{
     //如果不等于空 则实例化场景
    if (_bgColorScene!=Nil) {
        return _bgColorScene;
    }
    _bgColorScene=[[UIView alloc]initWithFrame:self.view.bounds];
    _bgColorScene.backgroundColor=[UIColor greenColor];
    
    CGRect frame=CGRectMake(0, 100, 320, 60);
    UISegmentedControl *testControl=[[UISegmentedControl alloc]initWithFrame:frame];
    testControl.momentary=YES;
    [testControl insertSegmentWithTitle:@"完成" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"背景颜色" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"取消" atIndex:0 animated:NO];
    testControl.tag=KBgColorSceneTestControlTag;
    //添加测试按钮触发的测试方法
    [testControl addTarget:self action:@selector(testSegue:) forControlEvents:UIControlEventValueChanged];
    [_bgColorScene addSubview:testControl];

return _bgColorScene;
}

-(UIView *)lineWidthScene
{
     //如果不等于空 则实例化场景
    if (_lineWidthScene!=Nil) {
        return _lineWidthScene;
    }
    _lineWidthScene=[[UIView alloc]initWithFrame:self.view.bounds];
    _lineWidthScene.backgroundColor=[UIColor brownColor];
    
    CGRect frame=CGRectMake(0, 100, 320, 60);
    UISegmentedControl *testControl=[[UISegmentedControl alloc]initWithFrame:frame];
    testControl.momentary=YES;
    [testControl insertSegmentWithTitle:@"完成" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"画笔大小" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"取消" atIndex:0 animated:NO];
    testControl.tag=KLineWidthSceneTestControlTag;
    //添加测试按钮触发的测试方法
    [testControl addTarget:self action:@selector(testSegue:) forControlEvents:UIControlEventValueChanged];
    [_lineWidthScene addSubview:testControl];

return _lineWidthScene;
}

-(UIView *)detailScene
{
      //如果不等于空 则实例化场景
    if (_detailScene!=Nil) {
        return _detailScene;
    }
    _detailScene=[[UIView alloc]initWithFrame:self.view.bounds];
    _detailScene.backgroundColor=[UIColor yellowColor];
    
    CGRect frame=CGRectMake(0, 100, 320, 60);
    UISegmentedControl *testControl=[[UISegmentedControl alloc]initWithFrame:frame];
    testControl.momentary=YES;
    [testControl insertSegmentWithTitle:@"Delete" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"" atIndex:0 animated:NO];
    [testControl insertSegmentWithTitle:@"Back" atIndex:0 animated:NO];
    testControl.tag=KDetailSceneTestControlTag;
    //添加测试按钮触发的测试方法
    [testControl addTarget:self action:@selector(testSegue:) forControlEvents:UIControlEventValueChanged];
    [_detailScene addSubview:testControl];

return _detailScene;
}

三,每个页面都得跳转,跳转方法添加如下:     (出口方法不确定是否有参数,我们传递一个参数为id类型)

#pragma mark -mainScene         出口方法
-(void)mainSceneToAboutScene:(id)sender
{
    //将关于界面提前
    [self.view bringSubviewToFront:self.aboutScene];
}
-(void)mainSceneToEditScene:(id)sender
{
    //将编辑界面提前
    [self.view bringSubviewToFront:self.editScene];
}
-(void)mainSceneToDetailScene:(id)sender
{
    //将详细界面提前
    [self.view bringSubviewToFront:self.detailScene];
}

#pragma mark -aboutScene        出口方法
-(void)aboutSceneBackMainScene:(id)sender
{
    //返回主界面
    [self.view bringSubviewToFront:self.mainScene];
}

#pragma mark -editScene         出口方法
-(void)editSceneToLineColorScene:(id)sender
{
    //将lineColor界面提前
    [self.view bringSubviewToFront:self.lineColorScene];
}

-(void)editSceneToBgColorScene:(id)sender
{
    //将BgColorScene界面提前
    [self.view bringSubviewToFront:self.bgColorScene];
}

-(void)editSceneToLineWidthScene:(id)sender
{
    //LineWidthScene提前
    [self.view bringSubviewToFront:self.lineWidthScene];
}

-(void)editSceneBackMainScene:(id)sender
{
    //MainScene提前
    [self.view bringSubviewToFront:self.mainScene];
}

#pragma mark -lineColorScene    出口方法
-(void)lineColorSceneBackEditScene:(id)sender
{
    //editScene提前
    [self.view bringSubviewToFront:self.editScene];
}

#pragma mark -bgColorScene      出口方法
-(void)bgColorSceneBackEditScene:(id)sender
{
    //editScene提前
    [self.view bringSubviewToFront:self.editScene];
}

#pragma mark -lineWidthScene    出口方法
-(void)lineWidthSceneBackEditScene:(id)sender
{
    //editScene提前
    [self.view bringSubviewToFront:self.editScene];
}

#pragma mark -detailScene       出口方法
-(void)detailSceneToEditScene:(id)sender
{
    //editScene提前
    [self.view bringSubviewToFront:self.editScene];
}

-(void)detailSceneBackMainScene:(id)sender
{
    //mainScene提前
    [self.view bringSubviewToFront:self.mainScene];
}

四,定义页面的tag作为宏

#define KMainSceneTestControlTag        1001
#define KAboutSceneTestControlTag       1002
#define KEditSceneTestControlTag        1003
#define KLineColorSceneTestControlTag   1004
#define KBgColorSceneTestControlTag     1005
#define KLineWidthSceneTestControlTag   1006
#define KDetailSceneTestControlTag      1007

五,实现跳转,都是一个模式,看一个就知道其他的了,下面把所有的都列举出来,其实并不复杂

#pragma mark --测试程序流程的方法
-(void)testSegue:(UISegmentedControl *)testControl
{
    switch (testControl.tag) {
        case KMainSceneTestControlTag:
        {
            switch (testControl.selectedSegmentIndex) {
                case 0:
                {
                    [self mainSceneToEditScene:nil];
                    break;
                }
                case 1:
                {
                    break;
                }
                case 2:
                {
                    [self mainSceneToAboutScene:nil];
                    break;
                }
                    
                default:
                    break;
            }
             break;
        }
            
        case KAboutSceneTestControlTag:
        {
            switch (testControl.selectedSegmentIndex) {
                case 0:
                {
                    [self aboutSceneBackMainScene:nil];
                    break;
                }
                case 1:
                {
                    
                    break;
                }
                case 2:
                {
                    
                    break;
                }
                    
                default:
                    break;
            }
            break;
        }
        case KEditSceneTestControlTag:
        {
            switch (testControl.selectedSegmentIndex) {
                case 0:
                {
                    [self editSceneBackMainScene:nil];
                    break;
                }
                case 1:
                {
                    [self editSceneToBgColorScene:nil];
                    break;
                }
                case 2:
                {
                    [self editSceneToLineColorScene:nil];
                    break;
                }
                case 3:
                {
                    [self editSceneToLineWidthScene:nil];
                    break;
                }
                  
                default:
                    break;
            }
            break;
        }
            
        case KLineColorSceneTestControlTag:
        {
            switch (testControl.selectedSegmentIndex) {
                case 0:
                {
                   [self lineColorSceneBackEditScene:nil];
                    break;
                }
                case 1:
                {
                   
                    break;
                }
                case 2:
                {
                    [self lineColorSceneBackEditScene:nil];
                    break;
                }
                    
                default:
                    break;
            }
            break;
        }
        case KLineWidthSceneTestControlTag:
        {
            switch (testControl.selectedSegmentIndex) {
                case 0:
                {
                    [self lineWidthSceneBackEditScene:nil];

break;
                }
                case 1:
                {
                    
                    break;
                }
                case 2:
                {
                    [self lineWidthSceneBackEditScene:nil];
                    break;
                }
                    
                default:
                    break;
            }
            break;
        }
            
        case KBgColorSceneTestControlTag:
        {
            switch (testControl.selectedSegmentIndex) {
                case 0:
                {
                    [self bgColorSceneBackEditScene:nil];
                    break;
                }
                case 1:
                {
                    
                    break;
                }
                case 2:
                {
                   [self bgColorSceneBackEditScene:nil];
                    break;
                }
                    
                default:
                    break;
            }
            break;
        }
        case KDetailSceneTestControlTag:
        {
            switch (testControl.selectedSegmentIndex) {
                case 0:
                {
                    [self detailSceneToEditScene:nil];
                    break;
                }
                case 1:
                {
                    
                    break;
                }
                case 2:
                {
                    [self detailSceneBackMainScene:nil];
                    break;
                }
                    
                default:
                    break;
            }
            break;
        }           
        default:
            break;
            
    }

IOS 作业项目(4)步步完成 画图 程序(上)的更多相关文章

  1. IOS 作业项目(4)步步完成 画图 程序(中续)

    一,程序布局整理 前言://1,程序启动//2,程序流程框架//3,程序界面一致//4,程序界面功能, //这里只做页面的固定功能, //在首次创建界面时,我们会指定好固定事件触发前的固定方法 //至 ...

  2. IOS 作业项目(4)步步完成 画图 程序(问题处理)终结

    一,解决换色程序崩溃问题 程序崩溃是因为颜色的内存被释放,添加如下类的内容即可 @implementation TuyaPath - (id)init { self = [super init]; i ...

  3. IOS 作业项目(4)步步完成 画图 程序(剧终)

    // //  CHViewController.m //  SuperDrawingSample // //  Created by JaikenLI on 13-11-21. //  Copyrig ...

  4. IOS 作业项目(4)步步完成 画图 程序(中)

    一,承接上文,继续本文  [UIButton buttonWithType:UIButtonTypeRoundedRect]; 如此声明的按钮才会有点击闪动的效果!如果直接frame方式声明就不会有. ...

  5. IOS 作业项目(2) 画图(保存,撤销,笔粗细设定功能)

    先上效果图

  6. IOS 作业项目 TableView两个section中cell置顶功能实现

    点击cell会置顶,其他的下移

  7. IOS 作业项目(3) 霓虹灯效果

    先上效果图 #import "CHViewController.h"@interface CHViewController (){    int i;    int j;}@pro ...

  8. IOS 作业项目(1) 关灯游戏 (百行代码搞定)

    1,准备工作,既然要开关灯,就需要确定灯的灯的颜色状态 首先想到的是扩展UIColor

  9. (转)直接拿来用!最火的iOS开源项目(一)

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...

随机推荐

  1. Android 反编译工具简介

    Android 反编译工具: 所需工具:1 apktool : 用于获取资源文件 2 dex2Jar : 用于将classes.dex转化成jar文件 2 jd-gui: 将jar文件转化成java文 ...

  2. hdu----(4686)Arc of Dream(矩阵快速幂)

    Arc of Dream Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  3. hdu----(1402)A * B Problem Plus(FFT模板)

    A * B Problem Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  4. 218. The Skyline Problem *HARD* -- 矩形重叠

    A city's skyline is the outer contour of the silhouette formed by all the buildings in that city whe ...

  5. MongoDB 一对多关系建模

    转文: 本篇博客翻译自: http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-par ...

  6. Swing——JFrame

    1.定义 相对于AWT(hevay weight component),Swing(hevay weight component)是轻量化的组件.Swing由纯Java Code 所写,解决了Java ...

  7. FaceBook Twitter实习生简历求内推

    写在博客里面吧. 有一个朋友,男,博士在读,研究方向为图像处理,计算机视觉相关. 想在在读期间有一些海外实习经历.不知道哪位博友,有相关的人脉,求内推啊.内推成功的话请吃大餐,哈哈!

  8. Chrome plug-in 和Extension

    "扩展"和"插件",其实都是软件组件的一种形式,Chrome 只不过是把两种类型的组件分别给与了专有名称,一个叫"扩展",另一个叫" ...

  9. C++ fstream stringstream

    一.文件输入输出 C/C++ 输入: freopen("in.cpp", "r", stdin); fclose(stdin); 输出: freopen(&qu ...

  10. S1 : 函数

    一.做为值的函数 例如,假设有一个对象数组,我们想要根据某个对象属性对数组进行排序.而传递给数组sort()方法的比较函数要接收两个参数,即要比较的值.可是,我们需要一种方式来指明按照哪个属性来排序. ...