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
时间: 2024-11-07 21:15:54

MVC 构造的相关文章

第八节:Sping Mvc

Spring MVC 框架简介 Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射.视图渲染.本地化.时区与主题渲染等,甚至还能支持文件上传.处理器是你的应用中注解了@Controller和@RequestMapping的类和方法,Spring为处理器方法提供了极其多样灵活的配置.Spring 3.0以后提供了@Controller注解机制.@PathVariable注解以及一些

django常用命令有几个

Django是一个基于MVC构造的框架.在python web开发中,我们会经常用到django基础命令,小编总结了七个常用的django命令. 1.创建一个Django Project #使用下面的命令可以创建一个project [email protected]~: django-admin.py startproject mysite #创建好之后可以看到如下的project结构 mysite/ manage.py mysite/ __init__.py settings.py urls.

Django学习系列之基础

Django介绍 Django简介 Django是一个基于MVC构造的框架.但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model).模板(Template)和视图(Views),称为 MTV模式,它们各自的职责如下: 模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取.如何验证有效性.包含哪些行为以及数据之间的关系等 视图(View),即表现层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示;模型与模板的桥

python小白-day15 Django基础

Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布.这套框架是以比

文成小盆友python-num17 - django基础

一.首先了解web应用的本质 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 下面利用socket实现一个简单的web框架: #!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send(

Django的介绍

Django是一个开放源代码的Web应用框架,由Python写成. Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终用户设计的完美管理界面 一流的 URL 设计 设计者友好的模板语言 缓存系统. MVC模式 说到Web框架,我们都知道MVC模式,可以浅谈一下什么是MVC模式. 把数据存取逻辑.业务 逻辑和表现逻辑组合在一起的概念有时被称为软件架构的 Model-View-Controller(MVC)模式. Model 代表数据存取层, View 代表的是系统中选择显示什么和

第四篇:Web框架 - Django

前言 Django是一个开放源代码的Web应用框架,由Python写成.它和J2EE一样,采用了MVC的软件设计模式,即模型M,视图V和控制器C. 本文将讲解DJango框架,并从实际应用的角度讲解一个DJango项目,此项目架构的网站可远程获取MySQL数据库数据并展示到网页上. Django框架 (引用自百度百科) Django是一个基于MVC构造的框架.但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django里更关注的是模型(Model).模板(Template)和视

正益无线赵庆华:AppCan助力开发者轻装前行

大谈特谈HTML5技术的厂商不在少数,而真的能够静下心,遵循HTML5的轨迹,扬HTML5之长,避HTML5之短,持之以恒为开发者谋求创新创业出路的厂商却乏陈可善.在前几日的iweb峰会上,正益无线赵庆华的演讲让笔者眼前一亮,作为国内最早支持并研究HTML5技术的厂商,AppCan以其前瞻的技术理念.丰富的项目实施经验.快速的反应能力,完善的服务体系,帮助开发者轻装前行. 一.HTML5逆袭,前端创业正当时 正益无线赵庆华谈到,自创立之处,AppCan的梦想就是让广大开发者轻装上阵,摒弃复杂.艰

Django基础之MTV模型

一.Django基础 一.Django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型(Model).视图(View)和控制器(Controller).它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布.这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. 1.mvc简介 http://blog.csdn.net/pi9n