• 02-UIKit控件、MVC


    目录:

    一、控件使用

    二、动态类型和静态类型

    三、MVC

    四、UIAlertView对话框

    回到顶部

    一、控件使用

    1 事件源,事件处理方法有一个参数传进来,那个参数就是触发这个事件的时间源。

    UISlider事件源,valueChange是事件,参数是sender,方法是:

    //该方法实现改变点击slider改变label值

    - (IBAction)valueChange:(id)sender {

        //强制把sender转换成UISlider类型

        UISlider* slider = (UISlider*)sender;

        //取slider的value值

        self.label.text = [NSString stringWithFormat:@"%d",(NSInteger)slider.value];

    }

    2 UISwitch

    //该方法实现当一个开关开时另一个开关也开

    @property (weak, nonatomic) IBOutlet UISwitch *switch2;

    @property (weak, nonatomic) IBOutlet UISwitch *switch1;

    - (IBAction)switchChange:(UISwitch *)sender {

        [self.switch2 setOn:sender.on animated:YES];//animated动画开关

        [self.switch1 setOn:sender.on animated:YES];

    }

    3 UITextField

         单行文本框

         关键属性  :@property NSString*    text;

         事件:

             Did End On Exit  : 输入结束后触发

             Editing Changed :  当有输入时,其内容一旦发生改变则触发

         第一响应者(First Responder)

             在一个界面中,第一响应者只有一个

             如果TextField成为第一响应者,那么键盘就会自动弹出。

             如果第一响应者变成其他非TextField,那么键盘就会自动收回。

             iOS7中当TextField中输入结束后,触发事件并调用方法时,TextField的第一响应者身份会自动放弃。

             可以用代码控件是否成为第一响应者:

                  [textField  resignFirstResponder];//放弃第一响应者

                  [textField  becomeFirstResponder];//成为第一响应者

         其他属性设置:

             Placeholder

             Clear Button

             Clear When Editing Begins

             Keyboard

             Return Key

             Secure

    回到顶部

    二、动态类型和静态类型

         id类型和具体的某个类型之间的区别。

         id类型可以指向任何类型的对象, 点不出任何东西,补齐项目中所有可能的方法。

         id类型也叫动态类型

         具体的类型叫静态类型

    回到顶部

    三. MVC

         3.1 概念

             MVC是一各综合的大型设计模式

             设计模式:

                  23 种经典设计模式

                  针对某一种特定的经典问题的经典解决方案。

                  使用设计模式解决的问题都是大型软件开发中的问题。

     

                  工厂模式   单例模式  装饰模式  组合模式 代理模式  MVC模式。。

         3.2  为什么要学习MVC模式

             iOS整个系统框架都是基于此模式设计的。还会有其他的模式

         3.3 iOS的MVC的简介

             V : View  视图   主要负责界面的布局和显示

             C : Controller  控制器   主要负责程序流程的跳转 和协调模型及视图

             M : Model   模型  主要负责数据的处理和分析, 以及业务逻辑处理

         3.4 为什么需要MVC

             最主要的原因是重用代码。

             可维护性好,可扩展性好

        

             如果不使用MVC,那么视图和需要处理的数据可能被封装在一个对象中,那么视图就达不到重用的效果。

             使用之后,数据和视图分离,数据的变化不会影响视图的代码,视图的改变也不会影响数据模型。中间需要控制器来进行协调和控制。

         3.5 具体的iOS的MVC

             View:   xib文件就是视图   UILabel , UIButton….

             Controller :   MXMyViewController …. 

             Model :  .count  NSArray

         3.6 深入MVC吧, MVC的一些类(了解)

                  3.6.1 Controller:

                       3.6.1.1  干什么

                            经常将Model中的数据交给View进行显示

                            经常将用户输入到View中的数据保存到Model中

                            经常处理用户在View上触发的事件

                       3.6.1.2  有哪些:

                           1) 自定义的Controller   MXMyViewController

                           2) 控制程序流程的大型Controller:

                                UINavigationController

                                UITabbarController

                           3)控制大量数据的

                                UITableViewController

                                UICollectionViewController

                           4)获取系统资源的

                                UIImagePickerController

                           所有的Controller类都继承自UIViewController

             3.6.2 View:

                  3.6.2.1 能干什么

                       向用户展示信息

                       接收用户的输入

                       接收用户的操作

                       界面的绘制

                       手势的识别

                       …

             3.6.2.2 有哪些

                       UIView的子类都是

                       UIWindow, UILabel UIControl  UIButton…

         3.6.3  Model       

             3.6.3.1 干什么

                  存储和管理数据

                  处理业务逻辑

             3.6.3.2  有什么

                  1)简单数据   NSInteger  count;

                  2)  集合对象

                       NSArray NSDictionary

                  3)  实体对象

                       MXTeacher  MXStudent  MXEmployee MXRecord

                  4) 小型数据库

                       SQLite   Core Data

                  5) 网络数据

                      

         3.7  通信

             任何界面至少需要一个Controller,任何Controller几乎都会有一个View

            

             C -->  V

                   通过属性赋值  IBOutlet

                       self.label.text = @"…";

             C --> M

                  直接通过属性

                  self.persons = [NSArray….];

             V -->  C

                   Target-Action

                  self.button addTarget:…action:… forControlEvent:…

                  xib文件中连线

            M --> C

                  观察者模式

                  KVO/Notification

           M和V不能通信

    练习:用户登录界面,有两个UITextField分别是用户名密码输入框,要求键盘的右下角是NEXT按钮,点击后光标移到下一个textField,密码输入星号,要求键盘右下角是done点击后收键盘

    回到顶部

    四、 UIAlertView

             4.2.1 用来显示一个对话框

             4.2.2 初始化方法

                  - (id)initWithTitle:(NSString *)title                              message:(NSString *)message

                                delegate:(id /*<UIAlertViewDelegate>*/)delegate

                                cancelButtonTitle:(NSString *)cancelButtonTitle

                                otherButtonTitles:(NSString *)otherButtonTitles,

                                ... ;

     

    几年前,Apple的工程师写的:

    @interface UIAlertView

    @property (nonatomic, strong) id delegate;

    -(id)initWithTitile:…delegate:…;

    @end

     

    @implementation

    -(id)initWithTitile:…delegate: delegate  …

    {

         self.delegate = delegate;

    }

    //点击按钮会调用的方法

    -(void)click

    {

         [id alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex];

    }

     

    @end

     

    作业:

    1. 把最后一个Demo补完整。

    2. 写一个调色板程序

         三个基本色(RGB)  Red Green Blue   0~255

         程序中有三个Slider    

                  Red        -------O--------

                  Green   -------O--------

                  Blue       -------O--------

         大的Label,任何Slide变化后,Label的背景都会跟着变

         要求:

             1)支持alpha

             2)  界面初始时,背景色和三个slider的当前值保持一致

             UIColor  类

                  [UIColor colorWithRGBA:….];

     

    3. 上节课中的作业,加功能:

             [输入框]  [发送按钮]

             点按钮会加入一个label,并且收起键盘,清空输入框

     

    4. 登录程序

          用户名  输入框

          密码      输入框

          登录      按钮

     

         完成基本的登录任务

     

         要求:

             1)当用户没有填用户名和密码时,点登录时会出现AlertView提示用户

             2)两个TextField都支持Next功能。

             3)自己扩展一些功能。。。。

  • 相关阅读:
    定时删除日志文件---linux定时清理日志
    Packagist 镜像使用方法--composer
    laravel 5.5 跨域问题解决方案
    linux服务器上面部署ShowDoc 安装Composer
    shell之批量新增用户脚本(http-basic-auth)
    js转义问题
    js之select三级联动
    《远见》之读书笔记
    Node.js之判断字符串中是否包含某个字符串
    微信小程序之页面传参
  • 原文地址:https://www.cnblogs.com/yangmx/p/3516373.html
Copyright © 2020-2023  润新知