如何重新加载/刷新基于button按下UIPickerView(与新的数据数组)?

点击这里查看我制作的美国/ can / mex选取器视图http://i39.tinypic.com/b7kpyq.jpg

如果我想要一个select器,对于国家/省份,我还没有看到一个例子,但是我在上面的链接中显示了一个美国/ Can / Mex的select器。 想知道你能dynamic地切换UIPickerView的NSMutableArray,然后每次点击US / Can / Mexbutton时都会以某种方式刷新它。 我如何去做这件事。 我采取什么方法。 寻找某人为正确的方向提供线索的初学者。

你将不得不实现数据源和委托。

一旦你按下一个button,设置一个数组指针到适当的数组。

比调用[thePicker reloadAllComponents];

 -(IBAction) usButtonPressed:(id)sender{ self.inputArray = self.usArray; [self.thePicker reloadAllComponents]; } -(IBAction) mexicoButtonPressed:(id)sender{ self.inputArray = self.mexicoArray; [self.thePicker reloadAllComponents]; } 

数据源方法:

 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { return 1; } - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { return [self.inputArray count]; } 

委托方法:

 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { return [self.inputArray objectAtIndex:row]; } 

Swift:xcode 6.1

//重新加载select器的组件(在触发器动作或button中使用这个)

 self.pickerControl.reloadAllComponents(); 

使用多个select器,或者使用开关块来确定应该加载哪些数据,并重新加载select器。

通过电话

 thePicker.delegate = self; 

再次,我能够强制刷新pickerview与新的信息

在你的button按下动作,

 [self.pickerView selectRow:0 inComponent:0 animated:YES]; 

在xcode-8的swift 3中,你只需要像下面这样写入didSelectRow函数

 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { self.view.endEditing(false) yourPickerView.selectRow(0, inComponent: 0, animated: true) yourPickerView.reloadAllComponents(); }