Изменить выбор CPPickerview программно?

Итак, у меня есть переключатель, и когда он включен, я бы хотел, чтобы CPPickerView переключился на определенное значение. в массиве. Кроме того, если окно выбора снова перемещается, я бы хотел, чтобы переключатель переместился в положение «выключено».

Я знаю, как получить текущий день недели, и я пытаюсь переключить выбор выбора на текущий день недели.

Если я не совсем правильно задаю здесь такой обобщенный вопрос, просто дайте мне знать, или если вам нужна дополнительная информация.

    //CPPicker
    self.daysOfWeekData = [[NSArray alloc] initWithObjects:@"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday", @"Sunday", nil];
    self.dayPickerView.allowSlowDeceleration = YES;
    [self.dayPickerView reloadData];
#pragma mark - Horizontal pickerview

//DataSource
-(NSInteger)numberOfItemsInPickerView:(CPPickerView *)pickerView {
    return 7;
}

-(NSString *)pickerView:(CPPickerView *)pickerView titleForItem:(NSInteger)item {
    return daysOfWeekData[item];
}

//Delegate
-(void)pickerView:(CPPickerView *)pickerView didSelectItem:(NSInteger)item {
    self.dayLabel.text = [NSString stringWithFormat:@"%@", daysOfWeekData[item]];
}

//Today's day date
- (IBAction)todaySwitchChange:(id)sender {

    if (todaySwitch.on) {

         NSLog(@"It is on");

    } else {

        NSLog(@"It is off");

    }
}

person jkd359    schedule 16.02.2014    source источник


Ответы (1)


Это можно сделать с помощью метода setSelectedItem:animated: CPPickerView вместе с обычными методами делегата.

В вашем методе todaySwitchChange:, когда переключатель включен, установите для CPPickerView желаемый индекс:

//Today's day date
- (IBAction)todaySwitchChange:(id)sender {

    if (todaySwitch.on) {
        NSLog(@"It is on");

        // This will cause the CPPickerView to select the item you choose
        NSUInteger itemToSelect = someValue; //whatever logic you need to select the right index
        [self.dayPickerView setSelectedItem:itemToSelect animated:YES]; // Or disable animation if desired

    } else {

        NSLog(@"It is off");

    }
}

Чтобы переключить переключатель, когда пользователь прокручивает CPPickerView, вам нужно подключиться к методу делегата, который дает вам уведомление о том, что прокрутка произошла:

// Implement the following delegate method
- (void)pickerViewWillBeginChangingItem:(CPPickerView *)pickerView {
    // Picker is going to change due to user scrolling, so turn the switch off
    if (todaySwitch.on) {
        todaySwitch.on = NO;
    }
}

Надеюсь это поможет!

person Chuck    schedule 23.05.2014