根据其他选择器视图中的选择查看选取器更新

时间:2014-02-05 08:22:06

标签: ios cocoa-touch uipickerview

我有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];
    }
}

我试过一个案例,如果我在第一个选择器中选择西班牙语,它会在第二个选择器中显示删除。但是我默认为第二个选择器是删除。

有人可以告诉我发生了什么吗?

1 个答案:

答案 0 :(得分:0)

它不起作用,因为在显示该特定行时调用pickerView:titleForRow:forComponent:。这会发生在选择器的所有可见行中。

选择发生在pickerView:didSelectRow:inComponent:。这就是你应该操纵第二个选择器阵列的内容的地方。在更新了支持选择器的阵列后,您必须为第二个选择器调用reloadAllComponentsreloadComponent: