如何根据按下按钮重新加载/刷新UIPickerView(使用新数据阵列)?

jim*_*iOS 56 cocoa-touch objective-c uipickerview ios

在此输入图像描述

如果我想要一个选择器,对于州/省,我还没有看到一个例子,但我在上面显示了一个模拟,是US/Can/Mex的选择器.想知道你能动态切换UIPickerView的NSMutableArray,然后每次点击US/Can/Mex按钮时以某种方式重新加载??? 我该怎么做呢 我采取什么方法.寻找某人为初学者指出正确方向的线索.

Vik*_*ica 116

您必须实现数据源和委托.

按下按钮后,将数组指针设置为相应的数组.

比打电话 [thePicker reloadAllComponents];

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

-(IBAction) mexicoButtonPressed:(id)sender{
    self.inputArray = self.mexicoArray;
    [self.thePicker reloadAllComponents];
}
Run Code Online (Sandbox Code Playgroud)

数据源方法:

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


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

委托方法:

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


Vin*_*shi 19

Swift:xcode 6.1

//重新加载选择器的组件(在触发器操作或按钮内使用)

self.pickerControl.reloadAllComponents();
Run Code Online (Sandbox Code Playgroud)


Ena*_*que 8

在 swift 3、4 或 5 中,您只需编写如下 didSelectRow 函数

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {


        self.view.endEditing(false)
        yourPickerView.selectRow(0, inComponent: 0, animated: true)
        yourPickerView.reloadAllComponents();

}
Run Code Online (Sandbox Code Playgroud)


Jua*_*uel 6

通过电话

thePicker.delegate = self;
Run Code Online (Sandbox Code Playgroud)

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