Objective C(UIPickerView):选择一个项目后执行操作

时间:2013-07-16 03:06:24

标签: ios nsmutablearray uipickerview

在我正在开发的应用程序上,我有UIPickerView的日程安排列表,我想要做的是在选择列表中的第6项后启用按钮。

我有这段代码,但我不能正常工作

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
    // Handle the selection
        [trainSchedule setText:[NSString stringWithFormat:@"%@",[schedArray objectAtIndex:[pickerView selectedRowInComponent:0]]]];
        if ([schedArray objectAtIndex:[schedArray objectAtIndex:[pickerView selectedRowInComponent:6]]]) { sendTrainRequest.enabled = YES; } else { sendTrainRequest.enabled = NO; }     
}

我也有这个警告......

Incompatible pointer to integer conversion sending 'id' to parameter of type 'NSUInteger' (aka 'unsigned int

如何能够做我想做的事情?

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找名为UIPickerViewDelegate的{​​{1}}方法here

答案 1 :(得分:0)

我认为问题出在你的if语句中。如果我正在解析您想要正确说出的内容,则如果选择了选择器中的第六项,则希望将sendTrainRequest.enabled设置为YES。您的if语句现在令人困惑,并且警告是因为您要将对象发送到schedArray的objectAtIndex方法,当您应该发送整数时。试试这个:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
// Handle the selection
    [trainSchedule setText:[NSString stringWithFormat:@"%@",[schedArray objectAtIndex:[pickerView selectedRowInComponent:0]]]];
    if ([pickerView selectedRowInComponent:0] == 5) 
        { sendTrainRequest.enabled = YES; } 
    else 
        { sendTrainRequest.enabled = NO; }     
}

请注意,此代码段中的硬编码5将评估为选择器视图中的第六项,因为它是零引用的。