zoukankan      html  css  js  c++  java
  • MVC 构造

    //
    //  View.h
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    #import "DataModel.h"
    
    @interface View : UIView
    //构造视图
    - (id)initWithFrame:(CGRect)frame addTarget:(id)target action:(SEL)action;
    
    - (void)updateViewByModel:(DataModel *)model;
    
    
    @end
    
    
    
    //
    //  View.m
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "View.h"
    
    @implementation View
    
    - (id)initWithFrame:(CGRect)frame addTarget:(id)target action:(SEL)action
    {
        self = [super initWithFrame:frame];
        if (self) {
            CGRect frame1=CGRectMake(frame.origin.x, frame.origin.y, frame.size.width-10, frame.size.height-50);
            //CGRect frame1=CGRectMake(frame.origin.x, frame.origin.y, frame.size.width-10, frame.size.height+10);
            UIView *bgView = [[UIView alloc] initWithFrame:frame1];
            bgView.backgroundColor = [UIColor yellowColor];
            CGFloat size = (frame.size.height-80)/12;
            for (int i=0; i<12; i++) {
                UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, size*i,50,size-10)];
                label.text = [NSString stringWithFormat:@"%d",i+1];
                label.backgroundColor = [UIColor grayColor];
                label.alpha = 0.8;
                label.textAlignment = NSTextAlignmentCenter;
                label.textColor = [UIColor redColor];
                [bgView addSubview:label];
                
                UIView *view = [[UIView alloc] initWithFrame:CGRectMake(50, size*i, 200, size-10)];
                view.tag = 200+i;
                view.backgroundColor = [UIColor blueColor];
                [bgView addSubview:view];
            }
            
            UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
            btn.frame = CGRectMake(100,frame.size.height-60,frame.size.width-200, 50);
            btn.backgroundColor = [UIColor purpleColor];
            [btn setTitle:@"NEXT" forState:UIControlStateNormal];
            
            [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
            
            [bgView addSubview:btn];
            bgView.tag = 100;
            self.backgroundColor=[UIColor blackColor];
            [self addSubview:bgView];
        }
        return self;
    }
    
    //根据数据模型修改视图宽度
    - (void)updateViewByModel:(DataModel *)model
    {
        UIView *bgView =(UIView *)[self viewWithTag:100];
        //NSLog(@"bgView = %@", bgView);
        for (int i=0; i<12; i++) {
            UIView *view = [bgView viewWithTag:200+i];
            CGRect frame = view.frame;
            frame.size.width = [model dataFromModelByIndex:i];
            view.frame = frame;
        }
    }
    
    @end
    //
    //  DataModel.h
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface DataModel : NSObject
    {
        NSMutableArray *_dataArray;
    }
    
    - (id)init;
    - (void)updateModel;
    - (int)dataFromModelByIndex:(int)index;
    
    @end
    
    
    
    
    //
    //  DataModel.m
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "DataModel.h"
    
    @implementation DataModel
    
    - (id)init
    {
        self = [super init];
        if (self) {
            _dataArray = [[NSMutableArray alloc] init];
            for (int i=0; i<12; i++) {
                [_dataArray addObject:[NSNumber numberWithInt:0]];
            }
        }
        return self;
    }
    
    //更新数据模型
    - (void)updateModel
    {
        for (int i=0; i<12; i++) {
            NSNumber *num = [NSNumber numberWithInt:arc4random()%300];
            [_dataArray replaceObjectAtIndex:i withObject:num];
        }
        NSLog(@"_dataArray = %@", _dataArray);
    }
    
    //获取指定位置视图的宽度
    
    - (int)dataFromModelByIndex:(int)index
    {
        return [[_dataArray objectAtIndex:index] intValue];
    }
    
    
    @end
    //
    //  ViewController.m
    //  UI5_HomeWork
    //
    //  Created by zhangxueming on 15/7/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "View.h"
    #import "DataModel.h"
    
    @interface ViewController ()
    {
        DataModel *_model;
        View *_view;
    }
    @end
    
    //MVC 设计模式
    //Model(数据模型)  提供View显示的数据
    //View (视图对象)  在View上显示模型数据
    //Controller (控制对象)
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        [self creatModel];
        [self creatUI];
        [self btnRefreshView];
    }
    
    
    - (void)creatModel
    {
        _model = [[DataModel alloc] init];
    }
    
    - (void)creatUI
    {
        _view = [[View alloc] initWithFrame:CGRectMake(10, 40, self.view.frame.size.width, self.view.frame.size.height-100) addTarget:self action:@selector(btnRefreshView)];
       // _view.backgroundColor=[UIColor blueColor];
        [self.view addSubview:_view];
        self.view.backgroundColor=[UIColor redColor];
    }
    
    //刷新视图
    - (void)btnRefreshView
    {
        [_model updateModel];
        [_view updateViewByModel:_model];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
  • 相关阅读:
    UVa 10118 记忆化搜索 Free Candies
    CodeForces 568B DP Symmetric and Transitive
    UVa 11695 树的直径 Flight Planning
    UVa 10934 DP Dropping water balloons
    CodeForces 543D 树形DP Road Improvement
    CodeForces 570E DP Pig and Palindromes
    HDU 5396 区间DP 数学 Expression
    HDU 5402 模拟 构造 Travelling Salesman Problem
    HDU 5399 数学 Too Simple
    CodeForces 567F DP Mausoleum
  • 原文地址:https://www.cnblogs.com/0515offer/p/4617168.html
Copyright © 2011-2022 走看看