如何重新加载/刷新基于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(); }