Objective C - 设置UIPickerView Delegate

jwk*_*knz 0 delegates datasource objective-c uipickerview ios

我有一个mainViewController,我有一个UIPickerView.现在所有设置都很好,但是当我运行应用程序并选择textField时,我的UIPickerView列表中会出现问号.

现在我刚刚了解到,那是因为我还没有连接代表.但是,如果我为它连接委托,则不会填充textField.

TextField位于mainViewController中.

因此,在我的MainViewController.h中,我导入了UIPickerView并拥有此代码 - 这些都没有错误._pv是UIPickerView.

 _pv = [[CategoryPicker alloc] init];

[_pv.categoryPicker setDelegate:self];
[_pv.categoryPicker setDataSource:_pv];

[_appPriorityTxtFld setInputView:_pv];
[_appPriorityTxtFld setInputAccessoryView:toolbar];
Run Code Online (Sandbox Code Playgroud)

现在您可以看到Delegate设置为self,这将允许填充textField.

如果我将其设置为_pv,那么我会正确显示列表,但不填充textField.

我错过了什么?

干杯

小智 6

您需要实现选择器委托方法"pickerView:didSelectRow:inComponent:",并且您需要将所选文本设置为textfild文本.请参阅以下代码以供参考,

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

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    textField.text = [dataArray objectAtIndex:row];
}
Run Code Online (Sandbox Code Playgroud)

我认为这可能有用.