OStack程序员社区-中国程序员成长平台

标题: objective-c - 如何解决uipickerview [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 22:14
标题: objective-c - 如何解决uipickerview

我的pickerview 有问题,单击文本字段会显示一个空的uipickerview。我有 3 个文本字段,通过单击每个文本字段,每个文本字段都会有不同的数组。 代码如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    tbMode.inputView = pickerView;
    tbWalkDist.inputView = pickerView;
    tbRouteOpt.inputView = pickerView;
}
-(BOOL)textFieldShouldReturnUITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
-(void)textFieldDidBeginEditingUITextField*)textField;
{
    modeArray = [[NSMutableArray alloc] init];
    if(textField.tag==1){
        [modeArray addObject" A "];
        [modeArray addObject" B "];
        pickerView.hidden = NO;
    }
    else{
        if(textField.tag==2){
            [modeArray addObject" 300 "];
            [modeArray addObject" 400 "]; 
            [modeArray addObject" 500 "];
            pickerView.hidden = NO;
    }
        else{
            if(textField.tag==3){
                [modeArray addObject" cheapest "];
                [modeArray addObject" fastest "];
                pickerView.hidden = NO;
            }
            else{
                pickerView.hidden=YES;
            }
        }
    }    
}
- (NSInteger)numberOfComponentsInPickerViewUIPickerView *)pickerView;
{
    return 1;
}

- (void)pickerViewUIPickerView *)pickerView didSelectRowNSInteger)row inComponent:    (NSInteger)component
{
    tbMode.text = [modeArray objectAtIndex:row];
}

- (NSInteger)pickerViewUIPickerView *)pickerView numberOfRowsInComponentNSInteger)component;
{
    return [modeArray count];
}

- (NSString *)pickerViewUIPickerView *)pickerView titleForRowNSInteger)row forComponentNSInteger)component;
{
    return [modeArray objectAtIndex:row];
}

请帮忙!我哪里做错了?是否可能不调用此方法 -(void)textFieldDidBeginEditing:(UITextField*)textField; ?谢谢

edit* 我错过了用于在 viewDidLoad

中调用该方法的每个文本字段的这 3 行
tbMode.delegate = self;
tbWalkDist.delegate = self;
tbRouteOpt.delegate = self;

但我仍然得到一个空的选择器 View 。如何将这些 NSMutableArray 添加到选择器 View 中 *添加 [pickerView reloadAllComponents]; 选择器将显示值



Best Answer-推荐答案


我在这里看不到您初始化 pickerView ivar 的位置。我可以假设它是在 xib 中创建的吗? 如果是这样,请确保您已连接 iBOutlet 并将其委托(delegate)和数据源属性设置为“文件所有者”或 View Controller 。

如果您在 init 方法中创建选择器,请发布该代码,以便我们查看这些属性是否设置正确。

您还必须将 Controller 设置为 uiTextField 的委托(delegate)。

此外,如果它们没有在其他地方实现,则您缺少这些必需的协议(protocol):

--pickerView:rowHeightForComponent:

--pickerView:widthForComponent:

关于objective-c - 如何解决uipickerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11714605/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4