zoukankan      html  css  js  c++  java
  • 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。将自己设置为代理方

  • 相关阅读:
    记录:VC++中打开保存目录选择对话框操作
    Active Server Pages 错误 ASP 0201 的最终解决办法
    已经阅读过的Ajax文章资源
    Delphi编译/链接过程
    初探Object Pascal的类(四)
    初探Object Pascal的类(九)
    初探Object Pascal的类(十)
    初探Object Pascal的类(五)
    初探Object Pascal的类(八)
    Delphi 7 IDE 界面
  • 原文地址:https://www.cnblogs.com/yhj1787354782/p/5051937.html
Copyright © 2011-2022 走看看