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)自己扩展一些功能。。。。

原文地址:https://www.cnblogs.com/yangmx/p/3516373.html