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。将自己设置为代理方
MVC 界面开发的更多相关文章
- DevExpress .NET界面开发示例大全
说到做.net界面开发,很多人应该都会想到DevExpress. 它的 .net界面开发系列一共有7个版本:WinForms.ASP.NET.MVC.WPF.Silverlight.Windows 8 ...
- 第二篇 界面开发 (Android学习笔记)
第二篇 界面开发 第5章 探索界面UI元素 ●The Android View Class ●△Widget设计步骤 需要修改三个XML,以及一个class: 1)第一个xml是布局XML文件 ...
- OpenWRT - WEB界面开发思路和基本方法
想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理
ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...
- 基于ASP.NET core的MVC站点开发笔记 0x01
基于ASP.NET core的MVC站点开发笔记 0x01 我的环境 OS type:mac Software:vscode Dotnet core version:2.0/3.1 dotnet sd ...
- JavaFX桌面应用-MVC模式开发,“真香”
使用mvc模块开发JavaFX桌面应用在JavaFX系列文章第一篇 JavaFX桌面应用开发-HelloWorld 已经提到过,这里单独整理使用mvc模式开发开发的流程. ~ JavaFX桌面应用开发 ...
- 全球首个全流程跨平台界面开发套件,PowerUI分析
一. 首个全流程跨平台界面开发套件,PowerUI正式发布 UIPower在DirectUI的基础上,自主研发全球首个全流程跨平台界面开发套件PowerUI(PUI)正式发布,PowerU ...
- HTML5界面开发工具jQuery EasyUI更新至v1.3.5
本文转自:evget.com HTML5界面开发工具 jQuery EasyUI 最新发布v1.3.5,新版修复了多个bug,并改进了menu,tabs和slider等多个控件.jQuery Easy ...
- Asp.net Mvc模块化开发之分区扩展框架
对于一个企业级项目开发,模块化是非常重要的. 默认Mvc框架的AreaRegistration对模块化开发真的支持很好吗?真的有很多复杂系统在使用默认的分区开发的吗?我相信大部分asp.net的技术团 ...
随机推荐
- web开发常用样式
1.div保持底部浮动(不受滚动条影响) position:fixed;_position:absolute;bottom:0px;_bottom:0px;_margin-top:expression ...
- JAVA采用JDBC连接操作数据库详解
JDBC连接数据库概述 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...
- 编译XSIP过程中环境配置
昨天在编译XSip的过程中,有很多问题首先是出现了很多的error C1083. 然后到XSIP自己的文件夹中,也找不到对应的.h文件. 上网查阅后发现应该是缺少了对应的头文件的路径. 于是到可以 ...
- 慕课linux学习笔记(九)常用命令(6)
关机与重启命令 Shutdown [选项] 时间 -c 取消前一个关机命令 -h 关机 -r 重启 Shutdown -r now 其他关机命令 Halt Poweroff Init 0 其他重启命令 ...
- JavaScript 语法陷阱
没有一门编程语言是完美的,JavaScript 也不例外,它语法陷阱重重,防不胜防: 加号 "with" 分号自动插入 声明提升 "eval" 多行字符串 变量 ...
- ashx中session的使用
在平常的页面上是用是很容易就的到request,response对像,从而对其进行一些操作,但在ashx(一般处理程序)中却是有一点的不同, 在ashx你无法正常的使用session,即 contex ...
- CSS的权重(转)
CSS写的渐渐多了,他的权重问题就不得不昂首面对,之前一直得过且过的将就用着,直到最近遇到了几个大坑,一直割刺着我对前端的热情,得了得了,蒙不过去了,就发点时间记下来吧,当然还是一片转载的文章,有时候 ...
- php的一些小笔记-文件函数(1)
---恢复内容开始--- 与文件操作相关的函数有一部分可以和linux命令比较,但是我觉得可能还是linux上使用的比较频繁 如:chown,chmod,chgrp,rename,touch,link ...
- Lambda表达式 之 C#
Lambda表达式 "Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量.它可以包含表达式和语句,并且可用于创建委托 ...
- 转载收藏之用 - 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
Senparc.Weixin.MP SDK已经涵盖了微信5.0的所有公共API,以及2013年10月29日升级之后大部分实用的接口. 整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:ht ...