如何在 iOS 中以编程方式从数组创建 Picker?
iosapps/applicationsmobile development更新于 2026/2/12 5:22:17
Picker 视图显示一个或多个轮子,用户可以通过操作轮子来选择项目。每个轮子(称为组件)包含一系列索引行,代表可选项目。
UIPicker 是重要的组件之一,几乎在大多数应用程序中都会用到。您主要会在基于表单的应用程序中看到它们。
您可以在此处阅读更多相关信息:https://developer.apple.com/documentation/uikit/uipickerview
在本文中,我们将了解如何以编程方式从数组创建 UIPicker,并将数组值加载到其中。
那么,让我们开始吧!
步骤 1 − 打开 Xcode 并创建一个单视图应用程序,并将其命名为 PickerSample。
步骤 2 −打开 ViewController.swift,由于我们是通过编程方式编写的,因此完全不需要修改 Storyboard。
步骤 3 − 首先在 viewDidLoad 方法中创建一个 UIPickerView 对象
let UIPicker: UIPickerView = UIPickerView()
步骤 4 − 设置委托并将视图加载到屏幕中央
UIPicker.delegate = self as UIPickerViewDelegate UIPicker.dataSource = self as UIPickerViewDataSource self.view.addSubview(UIPicker) UIPicker.center = self.view.center
步骤 5 −确认 viewController 类包含 UIPickerViewDelegate 和 UIPickerViewDataSource
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource
步骤 6 − 创建要显示的数据数组
let dataArray = ["English", "Maths", "History", "German", "Science"]
步骤 7 − 实现委托方法
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return dataArray.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
let row = dataArray[row]
return row
}
步骤 8 − 运行应用程序

完整代码
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
let dataArray = ["English", "Maths", "History", "German", "Science"]
override func viewDidLoad() {
super.viewDidLoad()
let UIPicker: UIPickerView = UIPickerView()
UIPicker.delegate = self as UIPickerViewDelegate
UIPicker.dataSource = self as UIPickerViewDataSource
self.view.addSubview(UIPicker)
UIPicker.center = self.view.center
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return dataArray.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
let row = dataArray[row]
return row
}
}

