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。将自己设置为代理方

MVC 界面开发的更多相关文章

  1. DevExpress .NET界面开发示例大全

    说到做.net界面开发,很多人应该都会想到DevExpress. 它的 .net界面开发系列一共有7个版本:WinForms.ASP.NET.MVC.WPF.Silverlight.Windows 8 ...

  2. 第二篇 界面开发 (Android学习笔记)

    第二篇 界面开发 第5章 探索界面UI元素 ●The Android View Class     ●△Widget设计步骤 需要修改三个XML,以及一个class: 1)第一个xml是布局XML文件 ...

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

    想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...

  4. ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理

    ASP.NET没有魔法——ASP.NET MVC Razor与View渲染   对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...

  5. 基于ASP.NET core的MVC站点开发笔记 0x01

    基于ASP.NET core的MVC站点开发笔记 0x01 我的环境 OS type:mac Software:vscode Dotnet core version:2.0/3.1 dotnet sd ...

  6. JavaFX桌面应用-MVC模式开发,“真香”

    使用mvc模块开发JavaFX桌面应用在JavaFX系列文章第一篇 JavaFX桌面应用开发-HelloWorld 已经提到过,这里单独整理使用mvc模式开发开发的流程. ~ JavaFX桌面应用开发 ...

  7. 全球首个全流程跨平台界面开发套件,PowerUI分析

    一.       首个全流程跨平台界面开发套件,PowerUI正式发布 UIPower在DirectUI的基础上,自主研发全球首个全流程跨平台界面开发套件PowerUI(PUI)正式发布,PowerU ...

  8. HTML5界面开发工具jQuery EasyUI更新至v1.3.5

    本文转自:evget.com HTML5界面开发工具 jQuery EasyUI 最新发布v1.3.5,新版修复了多个bug,并改进了menu,tabs和slider等多个控件.jQuery Easy ...

  9. Asp.net Mvc模块化开发之分区扩展框架

    对于一个企业级项目开发,模块化是非常重要的. 默认Mvc框架的AreaRegistration对模块化开发真的支持很好吗?真的有很多复杂系统在使用默认的分区开发的吗?我相信大部分asp.net的技术团 ...

随机推荐

  1. html5响应式布局

    1.media控制布局 <link type="text/css" rel="stylesheet" href="css04.css" ...

  2. OpenGL ES 2.0 卷绕和背面剪裁

    基本知识 背面剪裁是指渲染管线在对构成立体物体的三角形图元进行绘制时,仅当摄像机观察点位于三角形正面的情况下才绘制三角形. OpenGL ES中规定若三角形中的3个顶点的卷绕顺序是逆时针则摄像机观察其 ...

  3. 编译XSIP过程中环境配置

    昨天在编译XSip的过程中,有很多问题首先是出现了很多的error C1083. 然后到XSIP自己的文件夹中,也找不到对应的.h文件. 上网查阅后发现应该是缺少了对应的头文件的路径.   于是到可以 ...

  4. CSS注意事项

    1.定义样式不能就加:隔开 当有定义的css样式并没有起作用的时候看看定义该样式前边有没有加“;”的如 p{};div{}

  5. validatebox验证框架rules

    项目前端使用JQuery easyui框架,验证使用插件validatebox,验证方法如下: <input name="test" type="text" ...

  6. JSP EL

    一.JSP EL语言定义 E L(Expression Language)  目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 ...

  7. 转载:struts标签<s:date>的使用

    转载网址:http://blog.sina.com.cn/s/blog_510fdc8b01010vjx.html s truts 标签 :<s:date/>作用:用来格式化显示日期的格式 ...

  8. Small factorials Solved Problem code: FCTRL2

    import sys def fact(n): final = n while n > 1: final *= n - 1 n -= 1 return final #逻辑严谨,不要忘了retur ...

  9. C语言预处理指令的初步了解

    所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作.预处理是C语言的一个重要功能,它由预处理程序负责完成.当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分 ...

  10. hdu 2034

    Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法 ...