私は iOS Dev の初心者であり、図に示すように、プログラムで UITableView に複数の UISlider および UILabel コントロールを作成する方法についての助けをいただければ幸いです。
上のモックアップの写真に見られるように、対応するスライダー (同じ行にある) が変更されたときに、関連するラベル テキストを更新するだけで済みます。
以下のコードを使用すると、テーブル ビューの行ごとに複数のスライダー コントロールを動的に作成できますが、対応するラベルを表示して、スライダーの値が変更されたときにこのラベル テキストを更新することができません。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *ControlRowIdentifier = @"ControlRowIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ControlRowIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:ControlRowIdentifier];
CGRect frame = CGRectMake(0.0, 0.0, 100.0, 10.0);
UISlider *slider = [[UISlider alloc] initWithFrame:frame];
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
[slider setBackgroundColor:[UIColor clearColor]];
slider.minimumValue = 1;
slider.maximumValue = 70;
slider.continuous = YES;
slider.value = 30;
cell.accessoryView = slider;
}
NSUInteger row = [indexPath row];
NSString *rowTitle = [list objectAtIndex:row];
cell.textLabel.text = rowTitle;
return cell;
}
//Does not work
- (IBAction)sliderAction:(id)sender {
UISlider *sliderControl = (UISlider *)sender;
int SliderValue = (int)roundf(sliderControl.value);
UILabel *sliderLabel;
sliderLabel.text = [NSString stringWithFormat:@"%d", SliderValue];
[self.view addSubview:sliderLabel];
}