02-UIKit控件、MVC
目录:
一、控件使用
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的更多相关文章
- MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件
类似于多层级的角色与权限控制功能,用MVC实现MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件.最近我们的项目中需要用到树型菜单,以前使用WebForm时,树型菜单有微软提供的 ...
- iOS13适配/黑暗模式的适配/KVC访问私有属性/模态弹窗ViewController 默认样式改变 /LaunchImage即将废弃/蓝牙的权限申请/推送Device Token适配/UIKit 控件变化/StatusBar新增样式
目录 1. KVC访问私有属性 2. 模态弹窗ViewController 默认样式改变 3. 黑暗模式的适配 4. LaunchImage即将废弃 5. 新增一直使用蓝牙的权限申请 6. Sign ...
- iOS开发--UIKit控件之UISearchBar(搜索栏)
今天因为需求原因,需要用到搜索控件:之前一直没有用到过这个控件,所以去百度了一下,找到一篇可以说很齐全的资料,感谢这位作者. 然而,我并没有找到可以更改字体大小的属性或方法,希望有知道的告诉我一声,谢 ...
- UIKit控件直接显示网页文字内容
NSString *html = @"<bold>Hello</bold> Now<br> <em>iOS</em> can cr ...
- HTML5 02. 多媒体控件、拖拽事件、历史记录、web存储、应用程序缓存、地理定位、网络状态
多媒体 video:是行内块(text-align: center; 对行内块适用) <figure></figure>: 多媒体标签 : <figcaption> ...
- Windows程序==>>使用ListView控件展示数据
使用ListView控件展示数据 01.ImageList控件 1.了解了解 属性 说明 Images 储存在图像列表中的所有图像 ImageSize 图像列表中图像的大小 Trans ...
- 如何自定义iOS中的控件
本文译自 How to build a custom control in iOS .大家要是有什么问题,可以直接在 twitter 上联系原作者,当然也可以在最后的评论中回复我. 在开发过程中,有时 ...
- 如何用 Swift 语言构建一个自定控件
(via:破船之家,原文:How To Make a Custom Control in Swift) 用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它 ...
- [转]Asp.Net MVC 扩展联想控件
本文转自:http://www.cnblogs.com/bright-lin/archive/2013/02/06/MVC_SuggestBox.html 在web中,为改善用户体验,我们常会将一些文 ...
- MVC、控件、一般处理程序中的session and cookie
Mvc中: session: if (!string .IsNullOrEmpty(find)) //设置 Session["oip"] = "无锡"; Vie ...
随机推荐
- 简单的前端js+ajax 购物车框架(入门篇)
其实,一直想把自己写的一些js给总结下,也许是能力有限不能把它完美结合起来.只能自己默默的看着哪些代码,无能为力. 今天在公司实在没有事做,突然就想到写下商城的购物车的前端框架,当然我这里只有购物车的 ...
- DevExpress ASP.NET 使用经验谈(3)-XPO对象的使用(使用指定数据连接)
首先,我们贴出上一节Users类XPO对象的保存代码,直接建立的XPO Session会话,因为没有与我们所期望的数据层建立绑定, 所以程序自动创建了一个Access数据库,作为默认数据库操作对象来使 ...
- 【转】emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so
[转]emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so ./emulator64-arm ...
- Java学习03
Java学习03 1.java面试一些问题 一.什么是变量 变量是指在程序执行期间可变的数据.类中的变量是用来表示累的属性的,在编程过程中,可以对变量的值进行修改.变量通常是可变的,即值是变化的 二. ...
- BZOJ 3907: 网格( 组合数 + 高精度 )
(0,0)->(n,m)方案数为C(n,n+m), 然后减去不合法的方案. 作(n,m)关于y=x+1的对称点(m-1,n+1), 则(0,0)->(m-1,n+1)的任意一条路径都对应( ...
- BZOJ 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课( BFS )
BFS... 我连水题都不会写了QAQ ------------------------------------------------------------------------- #inclu ...
- struts2的坑以及tomcat的一些常识
Struts2中坑 1:一个很简单的跳转,死活跳不过去,总是404,那这个时候可以把struts.xml这个配置文件用IE浏览器打开,如果能够正常打开,那么说明struts.xml文件本身没有语法错误 ...
- codeforces 623A. Graph and String 构造
题目链接 给出一个图, 每个节点只有三种情况, a,b, c. a能和a, b连边, b能和a, b, c,连边, c能和b, c连边, 且无重边以及自环.给出初始的连边情况, 判断这个图是否满足条件 ...
- C语言之新同学年龄
新同学年龄 班里来了一名新同学,很喜欢学数学,同学们问他年龄的时候,他说我的年龄平方是个三位数,立方是个四位数,四次方是个六位数.三次方和四次方正好用遍0.1.2.3.4.5.6.7.8.9这10个数 ...
- linux 进程通信
IPC: 管道,FIFO,信号,消息队列(system v/ posix),共享内存(system v/ posix),socket 同步机制: 互斥锁,条件变量,记录上锁, 信号量(system ...