ios/uipickerview:我如何获得美国各州的选择器视图

use*_*273 2 uipickerview ios

IOS newb与网络编程背景.

在html中,我习惯使用select语句下拉包含状态(即AK,AL,CA,MA,NY,NJ等)的框.使用UIpickerview的等效语法是什么?我知道如何将选择器视图放在故事板中但不知道如何让所有状态显示在选择器中然后捕获选定状态.

在此先感谢您的任何建议.

sas*_*tch 6

当您将pickerView放在StoryBoard中时,在ViewController中创建一个IBOutlet,并创建一个状态数组

@IBOutlet weak var myPicker: UIPickerView!
var states = ["state1", "state2","state3"]
var selectedState = ""
Run Code Online (Sandbox Code Playgroud)

设置pickerView的委托和数据源

override func viewDidLoad() {
    super.viewDidLoad()
    myPicker.dataSource = self
    myPicker.delegate = self
}
Run Code Online (Sandbox Code Playgroud)

调用委托方法:

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return states.count
}
Run Code Online (Sandbox Code Playgroud)

要将数据放入选择器:

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
   return states[row]
}
Run Code Online (Sandbox Code Playgroud)

并捕获选定的状态:

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
   selectedState = states[row]
}
Run Code Online (Sandbox Code Playgroud)

编辑ObjC

创建插座并为pickerView设置委托和数据源非常相似:以下是委托方法:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return ([states count]);
}
Run Code Online (Sandbox Code Playgroud)

要将数据放入选择器:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return ([states objectAtIndex: row]);
}
Run Code Online (Sandbox Code Playgroud)

并捕获选定的状态:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

selectedState = ([states objectAtIndex:row]);
}
Run Code Online (Sandbox Code Playgroud)