MVC 界面开发

1.什么是设计模式

mvc只是其中一种,对某一类具体问题,总结出来的一套最优的解决方案

1.MVC:

1.Model(模型)     View(视图)    Controller(控制器) 的缩写

Model:程序中处理数据逻辑  (数据存储、业务逻辑、多线程、网络传输、文件存储)

View:程序中处理数据显示

Controller:View和Model的媒介

2.优点:

1.耦合性低

2.重用性高

3.可维护性高   (结构清晰、可重用、方便维护)

***1.对引用数据类型,在保证在第一次访问改属性时,数组空间被创建出来。所以就得重写属性get和set方法:

//重写suit属性的set方法

-(void)setSuit:(NSString *)suit{

if ([[Card allSuit]containsObject:suit]) {     Card类,+(NSArray*)allSuit;

_suit=suit;

}

}

//重写cardInfo属性的get方法

-(NSString*)cardInfo{

_cardInfo=[self.suit stringByAppendingString:self.rank];

return _cardInfo;

}

//保证在第一次访问改属性时,数组空间被创建出来

-(NSMutableArray *)allCards{

if (!_allCards) {

_allCards=[NSMutableArray array];

}

return _allCards;

}

**2.随机数

随机数从0开始的一个无符号正整数

unsigned int index=arc4random()%52   0-51

特点:不需要设置随机算子

**3.lazy loading 懒加载

知识点

八、多MVC开发 ( 多界面开发)

1.多MVC

每一个界面的显示都是一套独立的MVC,由于应用程序需要多个界面,所以构成了多套MVC。

注意:其中C和V是绑在一起的,但是M由于实现了程序中的数据存储以及业务逻辑,是与C和V分开的一套体系,所以多套C+V组合,可以共用一个M。但是,不允许v的共用,每一个c都有自己的v,不能因为要切换界面,而让某一个c抛弃自己带的v,换别的c下面的v。

1.1 多界面的切换

原理:更换了c就实现了更换了v

1.2 如何实现c的更换?

方向:从controlA  —> 推出controlB

[controlA  presentViewController:]

方向:A推出B之后,想从B再回到A

[controlB  dismissViewController:];

例:

创建两个控制器类A和B,每个类的xib界面拉入一个button按钮,然后添加方法。

功能:点击A界面的按钮回到B界面。点击B界面按钮返回到A界面

实现步骤如下:

#import "FristViewController.h"

@interface FristViewController ()

@end

@implementation FristViewController

- (void)viewDidLoad{

[super viewDidLoad];

}

- (IBAction)gotoSecondView:(id)sender {//A界面的方法

//创建要推出的vc的实例

SecondViewController* secondVc=[[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

//从当前控制器下方推出新的vc

[self presentViewController:secondVc animated:YES completion:nil];

}

#import "SecondViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController

- (void)viewDidLoad{

[super viewDidLoad];

}

//返回到第一个界面

- (IBAction)goBack:(id)sender {//B界面的方法

[self dismissViewControllerAnimated:YES completion:nil];

}

2.界面之间的正向传值

2.1 什么是正向传值:

当从控制器A推出新的控制器B的时候,A将界面中接受的数据同时也传给了B,由B进行展示或处理的过程

2.2 如何实现正向传值:

step1:为控制器B增加公开的属性用于接收外界传入的值

step2:控制器A为了推出B,会创建B的实例,创建完实例后,在推出之前,将要传递的属于存到B公开的属性中即可

step3:推出的控制器B在viewWillAppear中将数据展示到界面中

3.界面之间的反向传值

3.1 什么是反向传值 ?

从A推出了B之后,当从B返回到(dismiss)推出它的A时,传递了数据回来,由A进行显示的过程

3.2 如何实现

step1:B中公开一个可以接收A引用的属性aVC

step2:A中公开一个可以接收返回数据的属性message

step3:A推出B之前,将自己的引用传给B

step4:B在dismiss之前,将要返回的数据传给持有的A的引用中公开的message属性

step5:在A的viewWillAppear中,显示message的内容

2.方法二:

4.使用 委托 实现 反向传值

委托方:推出的B  代理方:推出B的那个A

委托方要做的三件事:

.h文件 a。定义协议1)协议名称 : 类名+Delegate  2)方法的第一个参数一定是委托方自己      3)方法名尽量体现发消息的时机

.h文件 b。添加delegate属性 @property(nonatomic,weak)id<BViewControllerDelegate>  delegate;

.m文件c。选择合适的时机给代理发消息

代理方要做的三件事:

a。遵守协议

b。实现方法

c。将自己设置为代理方

时间: 2024-11-20 12:21:52

MVC 界面开发的相关文章

界面开发的三层境界

关键词:GUI框架,UI编辑器,界面引擎,MVC 第一层境界:代码写死笔者大学时候开始学习的语言是C/C++,学习完基本的概念后,后面想开发有界面的应用程序接触的是win32,你会发现创建一个窗口或者一个button控件要写好多代码,例如配置标题,位置,大小,背景颜色,icon等等各种属性,api接口一大堆参数. win32创建窗口api HWND CreateWindow( LPCTSTR lpClassName, //窗口类型名称 LPCTSTR lpWindowName, //窗口名称 D

分层模式开发+MVC模式开发--韩顺平雇员数据库管理

1.分层模式 在使用分层设计模式编写代码之前,我们更多的是采用面向过程然后眉毛胡子一把抓,在一两个程序代码里写完所有的功能,这样只适合于小型个人项目.因为不利于阅读和修改,只有编程的个人比较熟悉程序的结构.这不利于程序的扩展性和协同开发.所以,我们引入一个固定的模式来进行编程,使得所有代码结构清晰明确,而且易于扩展延伸. 此处介绍的一种模式是分层模式.把程序分成几个层次:界面层.业务逻辑层.数据层. 界面层:主要功能就是实现界面的显示.比如要在登陆页面显示输入框之类,就需要login.php中放

分享一个漂亮的ASP.NET MVC界面框架

本文分享一个插件化的界面框架,该框架提供了用户.角色.权限管理功能,也提供了插件的管理和插件中心.下图是该界面框架的样式(全部源码和原理介绍下一篇分享,推荐越多,源码放的越早,呵呵). 要使用该界面框架,你可以通过以下地址来下载到界面框架的Visual Studio 2013模板:下载框架模板. 模板下载地址:http://files.cnblogs.com/baihmpgy/iOpenWorksMvc1.zip 下载后,解压缩,将iOpenWorksMvc1目录直接拷贝到VS的项目模板目录(C

MVC模式开发图书商城项目分析

MVC模式开发图书商城项目分析 1. 功能分析 1.用户注册 2.用户登录 3.添加商品(CURD) 4.商品查看-- 列表查询 5.商品详情页面 6.将商品添加购物车 7.查看购物车 8.修改购物车 9.生成订单 10.订单查看(取消) 11.在线支付 12.下载销售榜单 游客(未登录): 注册.登陆.商品查看 商城注册用户 : 商品查看.添加商品到购物车.购物车管理.生成订单.订单管理.在线支付 管理员 : 添加商品.商品管理.查看订单 .榜单查看(导出) 2. 系统设计 1技术选型 (系统

使用mvc模式开发网站

看了韩顺平的j2ee的视频后,吧里面教的做了出来,感觉好极了,新手上路!!! 这个肯定不是原创,但是也不是转载,那我就姑且把它作为翻译吧,给其他看视频学习但是没有代码的同学一点福利吧 首先是login.jsp的登陆界面代码. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <% String path = request.getConte

分享一个ASP.NET MVC界面框架

基于LCLFramework的ASP.NET MVC Plugin开发一个以Bootstrap为基础的adminise界面模板效果图如下: 漂亮界面框架实现 源码下载:http://download.csdn.net/detail/luomingui/8261743 从项目结构上看他们有三个插件 BlogPlugin    博客插件 BootstrapAppCenterPlugin   基于Bootstrap的adminise模板 BootstrapCoursePlugin      admin

OpenWRT - WEB界面开发思路和基本方法

想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是系统的一些参数)进行修改. 甚至是与远端服务器交互,实现验证. 一. 几种可行的开发路线: 1.改用PHP.JSP等语言开发 2.修改已有的界面,实现自己的功能 2.1 修改已有样式表 2.2 仍然利用lua开发 第一种比较容易操作,但需要在设备里安装nginx和PHP环境,然后在 /www下放PH

Java 图形界面开发--图文并茂建立学生管理系统

图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作. 这是本人在学习java图形界面开发阶段一步一步实现的超级简易的学生管理系统.虽然说不入大神法眼,但这确实是费了自己不少心血.对于我这样的菜鸟来说,考虑不周到,一不小心就Exception,然后就是自己调呀调.在此分享出来希望对和我一样的菜鸟有帮助. 程序完整代码下载地址见: https://github.com/chaohuangtianjie994/The-Sys

C++/SDK界面开发总结

对于不习惯用MFC的程序员来说,写界面应该是一个头疼的事情了.调用duilib等开源界面库的不讨论,本文主要说说Windows的原生界面功能开发,作为一篇总结,帮助新手入门. 1.窗口 主要通过新建资源窗口实现布局,调用就通过 DialogBox 和 CreateDialog 实现界面的显示.其中 DialogBox 为模态窗口, CreateDialog 为非模态窗口,简要说说区别: 模态窗口:在没有父窗口的时候,调用 DialogBox 实现显示窗口.系统在 DialogBox 这儿卡住,直