Swift基础(二十八)UIPickerView
2016-07-27 10:48
344 查看
class RootViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
// 定义两个数组以便数据源使用,
var authorsArray: [String]!
var appsArray: [String]!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.view.backgroundColor = UIColor.whiteColor()
// 创建选择控制器
let pickerView: UIPickerView = UIPickerView(frame: CGRectMake(0, 200, 0, 0))
// 添加到视图
self.view.addSubview(pickerView)
// 创建之后添加到视图时,因为没有实现数据源协议,所以没有数据。首先Controller类必须声明要实现UIPickerView的数据源协议代理
// 指定数据源即协议的代理人
pickerView.dataSource = self
pickerView.delegate = self
// 创建两个数组
authorsArray = ["张小凡", "马化腾", "王健林"]
appsArray = ["计算机", "懂技术", "老爹说", "接地网", "圣诞节"]
}
// 实现pickerView的数据源协议和代理,显示数据
// 返回多少列
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 2
}
// 每一列返回多少行
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
// 第一列返回authorsArray对应的值
if component == 0 {
return self.authorsArray.count
} else if component == 1 {
return self.appsArray.count
}
return 0
}
// 通过字符串来创建选择控制器
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
// 第一列返回authorsArray对应的值
if component == 0 {
return authorsArray[row]
} else if component == 1 {
return appsArray[row]
}
return ""
}
// 选项改变后,触发代理事件
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print("当前选择的是第\(component)列 第\(row)行")
}
// 通过View来创建带有图片的选择控制器
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
let view: UIView = UIView(frame: CGRectMake(0, 0, 200,40))
// 创建图像视图
let imageView = UIImageView(frame: CGRectMake(0, 0, 40, 40))
imageView.image = UIImage(named: "image.png")
// 创建文本标签
let label: UILabel = UILabel(frame: CGRectMake(40, 0, 160, 40))
// 第一列返回authorsArray
if component == 0 {
label.text = authorsArray[row]
} else if component == 1 {
label.text = appsArray[row]
}
// 添加图像
view.addSubview(imageView)
// 添加文本标签
view.addSubview(label)
return view
}
}
// 定义两个数组以便数据源使用,
var authorsArray: [String]!
var appsArray: [String]!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.view.backgroundColor = UIColor.whiteColor()
// 创建选择控制器
let pickerView: UIPickerView = UIPickerView(frame: CGRectMake(0, 200, 0, 0))
// 添加到视图
self.view.addSubview(pickerView)
// 创建之后添加到视图时,因为没有实现数据源协议,所以没有数据。首先Controller类必须声明要实现UIPickerView的数据源协议代理
// 指定数据源即协议的代理人
pickerView.dataSource = self
pickerView.delegate = self
// 创建两个数组
authorsArray = ["张小凡", "马化腾", "王健林"]
appsArray = ["计算机", "懂技术", "老爹说", "接地网", "圣诞节"]
}
// 实现pickerView的数据源协议和代理,显示数据
// 返回多少列
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 2
}
// 每一列返回多少行
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
// 第一列返回authorsArray对应的值
if component == 0 {
return self.authorsArray.count
} else if component == 1 {
return self.appsArray.count
}
return 0
}
// 通过字符串来创建选择控制器
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
// 第一列返回authorsArray对应的值
if component == 0 {
return authorsArray[row]
} else if component == 1 {
return appsArray[row]
}
return ""
}
// 选项改变后,触发代理事件
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print("当前选择的是第\(component)列 第\(row)行")
}
// 通过View来创建带有图片的选择控制器
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
let view: UIView = UIView(frame: CGRectMake(0, 0, 200,40))
// 创建图像视图
let imageView = UIImageView(frame: CGRectMake(0, 0, 40, 40))
imageView.image = UIImage(named: "image.png")
// 创建文本标签
let label: UILabel = UILabel(frame: CGRectMake(40, 0, 160, 40))
// 第一列返回authorsArray
if component == 0 {
label.text = authorsArray[row]
} else if component == 1 {
label.text = appsArray[row]
}
// 添加图像
view.addSubview(imageView)
// 添加文本标签
view.addSubview(label)
return view
}
}
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- Apple Swift学习教程
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 肯特·贝克:改变人生的代码整理魔法
- 你应该学习哪种编程语言?
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- [转]我们需要一种其他人能使用的编程语言
- 介绍 Fedora 上的 Swift
- DB2编程序技巧(1)
- DB2编程序技巧 (四)
- 女人VS编程_国庆快乐
- DB2编程序技巧 (六)
- DB2编程序技巧 (三)
- DB2编程序技巧 (九)
- DB2编程序技巧 (七)