0

在我正在开发的应用程序上,我有一个时间表列表,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

如何能够做我想做的事?

4

2 回答 2

0

我认为您正在寻找UIPickerViewDelegate一种称为这里pickerView:didSelectRow:inComponent:记录的方法

于 2013-07-16T03:08:23.177 回答
0

我认为问题出在您的 if 语句中。如果我正在解析您要正确表达的内容,那么如果选择器中的第六个项目被选中,您希望将 sendTrainRequest.enabled 设置为 YES。您的 if 语句现在令人困惑,警告是因为您将对象发送到objectAtIndexschedArray 的方法,而您应该发送一个整数。尝试这个:

- (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 将评估为选择器视图中的第六个项目,因为它是零引用的。

于 2013-07-16T04:28:37.463 回答