Picker 是指提供多个选项集合供用户选择其中一项的控件。它是继承UIView的UIPickerView类的实例。
class UIPickerView : UIView
顾名思义,选择器视图允许用户从多个项目集中选择一个项目。 PickerView可以显示一个或多个集合,其中每个集合称为一个组件。每个组件都显示一系列代表可选项目的索引行。
SN | Method | Description |
---|---|---|
1 | func numberOfRows(inComponent: Int) -> Int | 它表示在pickerview的单个组件中显示的行数。 |
2 | func rowSize(forComponent: Int) -> CGSize | 它表示iOS应用程序中指定组件的行的大小。 |
3 | func reloadAllComponents() | 此函数用于重新加载选择器视图的所有组件。 |
4 | func reloadComponent(Int) | 此函数用于重新加载选择器视图的特定组件。 |
5 | func selectRow(Int, inComponent: Int, animated: Bool) | 此方法用于在特定选择器视图的指定组件中选择一行。 |
6 | func selectedRow(inComponent: Int) -> Int | 此方法用于返回选择器视图中所选行的指定组件的索引。 |
7 | func view(forRow: Int, forComponent: Int) -> UIView? | 此方法用于返回选择器视图用于给定行和组件的视图。 |
SN | Property | Description |
---|---|---|
1 | var dataSource: UipickerviewDataSource? | 它代表指定选取器视图的数据源。 |
2 | var delegate: UipickervieweEgate? | 它代表选择器视图的委托。 |
3 | var numberOfComponents: Int | 它代表选择器视图中的组件数。 |
UIPickerViewDataSource用于使选择器视图具有组件数量以及每个组件中的行数,以显示选择器视图数据。
SN | Method | Description |
---|---|---|
1 | func numberOfComponents(in: UIPickerView) -> Int | 整数,该整数表示iOS的选择器视图中的组件数。 |
2 | func pickerView(UIPickerView, numberOfRowsInComponent: Int) -> Int | 整数,代表特定应用程序中的行数。 |
UIPickerViewDelegate的对象必须符合UIPickerViewDelegate协议,才能定义每个组件中行的高度,宽度,行标题和视图内容。
SN | Method | Description |
---|---|---|
1 | func pickerView(UIPickerView, rowHeightForComponent: Int) -> CGFloat | 当需要在pickerview组件中设置行的高度时,将由picker视图调用。 |
2 | func pickerView(UIPickerView, widthForComponent: Int) -> CGFloat | 当需要在pickerview组件中设置行的宽度时,由pickerview调用。 |
3 | func pickerView(UIPickerView, titleForRow: Int, forComponent: Int) -> String? | 它返回一个字符串,该字符串代表pickerview组件中该行的标题。 |
4 | func pickerView(UIPickerView, attributedTitleForRow: Int, forComponent: Int) -> NSAttributedString? | 当需要为pickerview组件中的任何行设置样式化标题时,它就会由pickerview调用。 |
5 | func pickerView(UIPickerView, viewForRow: Int, forComponent: Int, reusing: UIView?) -> UIView | 它返回UIView的对象,该对象用于指定组件中的指定行。 |
6 | func pickerView(UIPickerView, didSelectRow: Int, inComponent: Int) | 当用户在pickerview组件中选择一行时,将调用此方法。 |
示例1 - 这是一个非常简单的示例,其中,无涯教程将pickerview添加到无涯教程的界面中。无涯教程将定义数据源并委托方法来设置pickeview的数据和样式。
要为此示例创建接口构建器,无涯教程将搜索选择器视图,如下图所示。
下图给出了将用于该项目的完整main.storyboard,其中,无涯教程使用了标签和pickerview来选择项目。
链接:https://www.learnfk.comhttps://www.learnfk.com/ios/ios-pickerview.html
来源:LearnFk无涯教程网
ViewController.swift
import UIKit class ViewController: UIViewController { @IBOutlet weak var pickerView: UIPickerView! var arr = Array<string>() override func viewDidLoad() { super.viewDidLoad() //加载视图后进行任何其他设置。 pickerView.dataSource = self pickerView.delegate = self for i in 0.. Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return arr.count } } extension ViewController : UipickervieweEgate{ func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return arr[row] } }
输出:
示例2 - 在此示例中,无涯教程将了解pickerview的正常函数。在这里,无涯教程创建了标签,然后创建了pickerview。每个标签都与特定组件相关联。
在此示例中,无涯教程提示用户从选择器视图中选择时间。在这里,无涯教程将创建单独的组件和标签以显示小时,分钟和秒。从pickerview中选择适当的值后,无涯教程将更改标签的文本。
ViewController.swift
import UIKit class ViewController: UIViewController { @IBOutlet weak var pickerView: UIPickerView! @IBOutlet weak var hourLbl: UILabel! @IBOutlet weak var minuteLbl: UILabel! @IBOutlet weak var secondLbl: UILabel! var hourArr = Array<string>() var minuteArr = Array<string>() var secondArr = Array<string>() override func viewDidLoad() { super.viewDidLoad() //Do any additional setup after loading the view. pickerView.delegate = self pickerView.dataSource = self for i in 0...23{ hourArr.insert(i.description, at: i) } minuteArr = ["00","05","10","15","20","25","30","35","40","45","50","55"] secondArr = minuteArr } } extension ViewController : UipickervieweEgate.{ func numberOfComponents(in pickerView: UIPickerView) -> Int { return 3 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { var numberOfRows = 0 switch component { case 0: numberOfRows = 24 case 1: numberOfRows = 12 case 2: numberOfRows = 12 default: numberOfRows = 0 } return numberOfRows } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { var title = "" switch component{ case 0: title = hourArr[row] case 1: title = minuteArr[row] case 2: title = secondArr[row] default: title = "" } return title } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { switch component { case 0: hourLbl.text = hourArr[row] case 1: minuteLbl.text = minuteArr[row] case 2: secondLbl.text = secondArr[row] default: hourLbl.text = "" } } } extension ViewController : UipickerviewDataSource.{ }
输出:
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)