[英]slider change affects other table cells
我的每个表格单元格都有一个滑块和一个标签来显示其值。 如果在单元格内保持所有接触的同时移动滑块,标签将按预期更新。 但是,如果在拖动滑块时触摸到另一个单元格,则在移动第一个单元格滑块的拇指时,第二个单元格的标签将更新。 如何将标签更改限制为滑块事件起源的第一个单元格?
-(IBAction)sliderChanged:(id)sender forEvent:(UIEvent*)event
{
NSSet *allTouches = [event allTouches];
UITouch *firstTouch = [[allTouches allObjects] objectAtIndex:0];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[firstTouch locationInView:self.tableView]];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
if (cell)
{
UISlider *slider = (UISlider*)sender;
UILabel *sliderValueLabel = (UILabel*)[cell viewWithTag:kSliderValueLabelTag];
sliderValueLabel.text = [NSString stringWithFormat:@"%0.2f", slider.value];
}
}
您的代码对我来说似乎很合理,尽管要保持一致,我还是从“滑块”中获取单元格,而不是依靠接触点的坐标。 可能是“ allTouches”数组没有返回到您想要的原始印刷机。
为此,您需要获取滑块的superView,然后使用它来获取viewWithTag:。
假设滑块和标签包含在同一视图中,则可以尝试执行以下操作:
UIView *cellContentView = slider.superView;
UILabel *sliderValueLabel = [cellContentView viewWithTag:kSliderValueLabelTag];
如果不想依赖视图层次结构,也可以在与表中的行相对应的滑块上放置一个标签,然后使用该标签拉单元格。
当您移动滑块时,它会不断调用slideChanged方法。 在这种方法中,您可以更改触摸所在的单元格的标签,即当您触摸另一个单元格时,该单元格就是错误的单元格。
我会怎么做:
你也可以:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.