参考:Xcode 6.iOS 8. Swift. Simple UIPickerView. Part 1
Swift 版本:
1)在 IB 中通过拖拽的方式创建 UIPickerView 控件到 ViewController 代码的 connection,包括 data source 和 delegate 两个connection
2)代码中设置 UIPickerView 的实际数据,并实现 UIPickerViewDelegate 和 UIPickerViewDataSource 两个 protocol
3)运行结果
======================================
Objective C 版本:
1) 创建 connections
2)ViewController 准备数据、实现协议
ViewController.h
ViewController.m
注意:
Objective C 版本中,ViewController.m 第20行,不能像下面这样
[arr initWithObjects: @"1", @"2", @"3", @"4", @"5", @"6", nil];
如果不先 alloc 创建 arr 对象,就直接 initWithObjects,结果会是,虽然编译不报错,但是 PickerView 控件中空空如也
小结:
1)从上面步骤中,看不到下面这些动作对应的代码,它们都被 IB 和 UIKit 框架悄悄实现了,只是我们看不见那部分代码
- 整个 View 对应的代码中的对象的创建和初始化
- View 中的 PickerView 对应的代码中的对象的创建和初始化
- PickerView 对象向 ViewController 的回调的注册(代码中看不到,IB 中能看到 connection)
2)ViewController 遵从 UIPIckerViewDataSource 和 UIPickerViewDelegate 协议,PickerView 会在必要时向前者通过那两个协议请求 UI 相关的数据
3)整个工程符合 MVC 模式。PickerView 负责 UI,UIPIckerViewDataSource 和 UIPickerViewDelegate 协议的实现者(ViewController)负责提供数据,ViewController 自己扮演 controller 的角色