我有2个采摘者,每个采摘者有4个相同的项目。我希望当我在第一个选择器中选择任何值时,它会从第二个选择器中删除。
我已经编写了一段代码,但它无效。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.inWord.delegate = self;
//Set tags to differentiate
from.tag=1;
to.tag=2;
//Load NSArray fromlang
_fromlang= [[NSArray alloc] initWithObjects:@"English",@"Spanish",@"German",@"Chinese", nil];
//Load NSArray tolang
_tolang= [[NSArray alloc] initWithObjects:@"1English",@"1Spanish",@"German",@"Chinese", nil];
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if(pickerView.tag==1) // from
{
return _fromlang.count;
}
else //if(pickerView.tag==2) //to
{
return _tolang.count;
}
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if(pickerView.tag==1) //from
{
if ([[_fromlang objectAtIndex:row ] isEqual:@"Spanish"])
{
_tolang = @[ @"English",@"DeleteSanish",@"German",@"Chinese"];
}
return [_fromlang objectAtIndex:row];
}
else //if(pickerView.tag==2) //to
{
return [_tolang objectAtIndex:row];
}
}
我试过一个案例,如果我在第一个选择器中选择西班牙语,它会在第二个选择器中显示删除。但是我默认为第二个选择器是删除。
有人可以告诉我发生了什么吗?
答案 0 :(得分:0)
它不起作用,因为在显示该特定行时调用pickerView:titleForRow:forComponent:
。这会发生在选择器的所有可见行中。
选择发生在pickerView:didSelectRow:inComponent:
。这就是你应该操纵第二个选择器阵列的内容的地方。在更新了支持选择器的阵列后,您必须为第二个选择器调用reloadAllComponents
或reloadComponent:
。