我在Storyboard的视图控制器中设计了一个原型单元格,但不幸的是单元格中的UISlider
没有滑动。
注意: - 此故事板已启用Autolayout。
设计: -
以下是代码:以在UITableview
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell;
if(indexPath.row!=self.arrSelectRecipientsImages.count-1 )
{
cell = [tableView dequeueReusableCellWithIdentifier:@"selectReciptenceTabCell" forIndexPath:indexPath];
}
else
{
cell = [tableView dequeueReusableCellWithIdentifier:@"selectNearbyTabCell" forIndexPath:indexPath];
UISlider *sliderNearby = (UISlider *)[cell.contentView viewWithTag:199];
lblDistance = (UILabel *)[cell.contentView viewWithTag:190];
sliderNearby.userInteractionEnabled = YES;
[sliderNearby setThumbImage:[UIImage imageNamed:@"NearbyCircle"] forState:UIControlStateNormal];
[sliderNearby addTarget:self action:@selector(sliderNearbyAction:) forControlEvents:UIControlEventValueChanged];
}
return cell;
}
答案 0 :(得分:1)
我认为代码工作正常。 也无需设置用户交互。
以下是示例代码,您可以从中获得帮助。它适用于autolayout。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
UILabel *lblTitle = (UILabel *)[cell viewWithTag:100];
lblTitle.text = @"Hi";
UISlider *slider = (UISlider *)[cell viewWithTag:101];
slider.value = 0.2;
slider.tag = indexPath.row;
[slider addTarget:self action:@selector(sliderNearbyAction:) forControlEvents:UIControlEventValueChanged];
return cell;
}
- (void)sliderNearbyAction:(UISlider *)sender{
NSLog(@"Slider %ld Value : %.2f",(long)sender.tag, sender.value);
}
OUTPUT with Log:
Autolayout屏幕截图:
答案 1 :(得分:0)
嗯,问题非常愚蠢,我没有为不同索引路径中的单元格提供高度。这就是为什么最后一个单元格即滑块单元格正在显示但它的高度为30,所以在该区域之外的任何敲击或手势都是没有回应。
答案 2 :(得分:0)
问题可能出在isUserInteractionEnabled
中。如果您有任何可交互元素作为单元的子视图(而不是contentView的子视图),则需要设置
cell.contentView.isUserInteractionEnabled = false
该单元格。