[Geekband]iOS应用开发实战 - Button 笔记

目标 - 打招呼应用

应用界面:


[Geekband]iOS应用开发实战 - Button 笔记_第1张图片
应用界面

界面与代码分离

  • 可以只用代码来描绘界面及响应用户操作
  • 但是
    • 不直观
    • 调整麻烦
  • iOS的解决方案:
    • 用Interface Builder 画界面
    • 保存到xib(xml版的nib)文件
    • 用代码更新界面、响应用户操作
    • 保存在.m文件里

ib: Interface Builder,90年代初由NeXT创作

带来的两个小麻烦

  • 界面操作怎么指定响应代码?

  • 代码怎么引用界面元素?

[Geekband]iOS应用开发实战 - Button 笔记_第2张图片

解决方案 - Outlet

  • 为了让代码能引用nib中的对象

    • 需要代码里有一个变量来引用界面对象
    • 在界面对象创建后,给这个变量赋值
    • 这个过程最好能自动完成
  • Outlet

    • IBOutlet 标记的变量
  • Connection
    Nib Object 通过 Connection 与Outlet(Referencing outlet)建立联系

Outlet Connection 建立的过程

[Geekband]iOS应用开发实战 - Button 笔记_第3张图片
Outlet Connection

Action Connection

  • 界面事件
    • Interface Builder, Connection Inspector
  • 响应代码
    • IBAction 标记的方法
  • 关联:界面对象.事件 => 类实例.方法
[Geekband]iOS应用开发实战 - Button 笔记_第4张图片
IBAction

eventType: 响应的事件类型

touchUpInside: 事件类型,(手指)按下后在当前view响应范围内抬起

touchUpOutside: 事件类型,(手指)按下后在当前view响应范围外抬起

selector: target的事件响应方法

IBAction告诉编译器方法为IBAction对象,具体返回类型实际上相当于void

在Xcode中关联界面元素与代码

  • 打开Assistant Editor
  • 确保两边打开的文件正确
  • 使用鼠标右键按住control键从界面元素拖向代码中相应位置
  • 或在Interface Builder的Connection Inspector中从响应事件的小圆点拖向代码中相应位置
  • 或从代码左侧(需手写代码)的小圆点拖向对应组件

组件一般使用weak

空心小圆圈说明没有正确关联

注意要删除多余的connection

UIbutton 样式

[Geekband]iOS应用开发实战 - Button 笔记_第5张图片
UIbutton 样式

代码创建 UIButton

//创建
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
//定制
[button setBackgroundImage:[UIImage imageNamed:@"okbtn"] forState:UIControlStateNormal];
[button setTitle:@"OK" forState:UIControlStateNormal];
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
//添加响应
[button addTarget:self action:@selector(greeting:) forControlEvents:UIControlEventTouchUpInside];
// - event mask: UIControlEventTouchUpInside | UIControlEventTouchUpOutside

你可能感兴趣的:([Geekband]iOS应用开发实战 - Button 笔记)