目录:

一、控件使用

二、动态类型和静态类型

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

02-UIKit控件、MVC的更多相关文章

  1. MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件

    类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...

  2. iOS13适配/黑暗模式的适配/KVC访问私有属性/模态弹窗ViewController 默认样式改变 /LaunchImage即将废弃/蓝牙的权限申请/推送Device Token适配/UIKit 控件变化/StatusBar新增样式

    目录 1. KVC访问私有属性 2. 模态弹窗ViewController 默认样式改变 3. 黑暗模式的适配 4. LaunchImage即将废弃 5. 新增一直使用蓝牙的权限申请 6. Sign ...

  3. iOS开发--UIKit控件之UISearchBar(搜索栏)

    今天因为需求原因,需要用到搜索控件:之前一直没有用到过这个控件,所以去百度了一下,找到一篇可以说很齐全的资料,感谢这位作者. 然而,我并没有找到可以更改字体大小的属性或方法,希望有知道的告诉我一声,谢 ...

  4. UIKit控件直接显示网页文字内容

    NSString *html = @"<bold>Hello</bold> Now<br> <em>iOS</em> can cr ...

  5. HTML5 02. 多媒体控件、拖拽事件、历史记录、web存储、应用程序缓存、地理定位、网络状态

    多媒体 video:是行内块(text-align: center; 对行内块适用) <figure></figure>: 多媒体标签 : <figcaption> ...

  6. Windows程序==>>使用ListView控件展示数据

    使用ListView控件展示数据 01.ImageList控件 1.了解了解         属性 说明 Images 储存在图像列表中的所有图像 ImageSize 图像列表中图像的大小 Trans ...

  7. 如何自定义iOS中的控件

    本文译自 How to build a custom control in iOS .大家要是有什么问题,可以直接在 twitter 上联系原作者,当然也可以在最后的评论中回复我. 在开发过程中,有时 ...

  8. 如何用 Swift 语言构建一个自定控件

    (via:破船之家,原文:How To Make a Custom Control in Swift)   用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它 ...

  9. [转]Asp.Net MVC 扩展联想控件

    本文转自:http://www.cnblogs.com/bright-lin/archive/2013/02/06/MVC_SuggestBox.html 在web中,为改善用户体验,我们常会将一些文 ...

  10. MVC、控件、一般处理程序中的session and cookie

    Mvc中: session: if (!string .IsNullOrEmpty(find)) //设置 Session["oip"] = "无锡"; Vie ...

随机推荐

  1. 《TCP/IP详细说明》读书笔记(17章)-TCP传输控制协定

    1.TCP的服务 在一个TCP连接中.仅有双方进行彼此通信. TCP通过下列方式来提供可靠性: 1)应用数据被切割成TCP觉得最适合发送的数据块. 这和UDP全然不同,应用程序产生的数据报长度保持不变 ...

  2. Ext JS学习第三天 我们所熟悉的javascript(二)

    •javascript之函数 •对于Ext开发者,我还是希望你能对javascript原生的东西非常了解.甚至熟练掌握运用.那么函数,无疑是非常重要的概念.首先在前面一讲,我们知道了函数也是一种数据类 ...

  3. HttpWebRequest和WebClient的区别

     HttpWebRequest和WebClient的区别(From Linzheng): 1,HttpWebRequest是个抽象类,所以无法new的,需要调用HttpWebRequest.Creat ...

  4. javascript基础、语法

    JavaScript基础(简介.语法) 一.JavaScript简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? ...

  5. 学习validate

    jQuery Validate (转自http://www.w3cschool.cc/jquery/jquery-plugin-validate.html?utm_source=tuicool) jQ ...

  6. 使用autoCompleteTextView以及MultiAutoCompleteTextView实现自动匹配输入内容

    一:autoCompleteTextView 1:控件属性设置: 注意添加:android:completionThreshold="1"来设置输入几个字符的时候开始显示匹配的内容 ...

  7. jsp中的jquery失效以及引入js失败的问题

    这段时间在试着看公司用的框架是怎么写的,看到项目中对jquery进一步封装的这一部分,所以自己试着写一些demo来模仿框架中的用法. 再一次的,又遇到了一个问题,jsp中引入js的问题,好久没有自己从 ...

  8. 简单的webservice

    Hi,大家好! 今天主要和大家分享,如何搭建一个Web服务,做Android开发,不可避免会涉及到客户端开发,我们怎么样来实现一个服务端,怎么样来实现一个客户端,并相互传递数据.就算调用别人的服务时, ...

  9. win7和ubuntu双系统,win7时间晚8小时解决办法。

    装了Win7和Ubuntu双系统后发现,使用Ubuntu后再登陆win7时系统显示时间不准确,比实际时间晚了8小时. 搜索后发现原来Linux和Windows的系统时间管理是不同的.Linux是以主板 ...

  10. 17.2?Replication Implementation 复制实施:

    17.2?Replication Implementation 复制实施: 17.2.1 Replication Implementation Details 17.2.2 Replication R ...