Получить значение из UISlider внутри ячейки - PullRequest
1 голос
/ 02 декабря 2011

У меня есть tableView с пользовательскими ячейками, каждая ячейка имеет UISlider.

Теперь я хочу создать метод для получения значений этих UISliders, но я не знаю, как получить доступ к каждой ячейке и ее значению ползунка.

Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 02 декабря 2011

Сначала добавьте тег к каждому ползунку, чтобы вы не знали, какой ползун какой:

slider.tag = 0 //Can be any unique integer

Затем зарегистрируйте метод для изменения ползунка:

[slider addTarget:self action:@selector(sliderUpdate:) forControlEvents:UIControlEventValueChanged];

Наконец-то в вашем методе

-(void)sliderUpdate:(UISlider *)sender {
    int value = sender.value;
    int tag = sender.tag;
}

Тег теперь будет таким же уникальным целым числом, которое вы использовали ранее. Это способ идентификации элемента.

0 голосов
/ 02 декабря 2011

мммм, мало возможностей:

1) сохранить ссылку на все ячейки в вашем UITableViewController

В вашем tableView:cellForRowAtIndexPath:, прямо перед возвратом ячейки, добавьте его в массив, который у вас есть как свойство на вашем UITableViewController

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
      //Set up your cell

      [[self allCells] addObject:cell];
      return cell;
}

-(void)getSliderValues {
    for(CustomCell *cell in [self allCells]){
        //Here is your cell
        cell;
    }
}

2) использовать tableView:cellForRowAtIndexPath:

-(void)getSliderValues {
    int section = 0;
    int numberOfCells = [self tableView:[self tableView] numberOfRowsInSection:section];

    for(int row = 0; row < numberOfCells; row++) {
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];

        //Here is your cell
        CustomCell *cell = [self tableView:[self tableView] cellForRowAtIndexPath:indexPath];
    }
}

Обратите внимание, что в этом методе, если вы используете идентификаторы повторного использования, вы, вероятно, не получите нужную ячейку.

...