Ios UISlider添加到UITableViewCell中的怪异行为
我在故事板的单元格中添加了一个滑块。在Ios UISlider添加到UITableViewCell中的怪异行为,ios,objective-c,uitableview,uislider,Ios,Objective C,Uitableview,Uislider,我在故事板的单元格中添加了一个滑块。在cellforrowatinexpath:中,我获取滑块并以编程方式向滑块的拇指添加标签,然后返回单元格。代码如下 UISlider *forceDelaySlider = (UISlider *)[cell1 viewWithTag:102]; forceDelaySlider.minimumValue = 0.0; forceDelaySlider.maximumValue = 10.0; forceDelaySlider.value = [Settin
cellforrowatinexpath:
中,我获取滑块并以编程方式向滑块的拇指添加标签,然后返回单元格。代码如下
UISlider *forceDelaySlider = (UISlider *)[cell1 viewWithTag:102];
forceDelaySlider.minimumValue = 0.0;
forceDelaySlider.maximumValue = 10.0;
forceDelaySlider.value = [Settings sharedInstance].forceDelay;
[forceDelaySlider addTarget:self action:@selector(forceDelaySliderChanged:) forControlEvents:UIControlEventValueChanged];
UIImageView *handleView = [forceDelaySlider.subviews lastObject];
if (forceDelaySliderLabel)
{
[forceDelaySliderLabel removeFromSuperview];
forceDelaySliderLabel = nil;
}
forceDelaySliderLabel = [[UILabel alloc] initWithFrame:handleView.bounds];
forceDelaySliderLabel.text = [NSString stringWithFormat:@"%0.0f", forceDelaySlider.value];
forceDelaySliderLabel.backgroundColor = [UIColor clearColor];
forceDelaySliderLabel.textAlignment = NSTextAlignmentCenter;
[forceDelaySliderLabel setTextColor:[UIColor blackColor]];
[handleView addSubview:forceDelaySliderLabel];
return cell1,
现在,当表格显示时,在表格加载后,滑块上的标签不会出现。它显示得很简单,如下所示
上下滚动tableview后,带标签的滑块显示如下
为什么会这样?我被卡住了。请帮我解决这个奇怪的行为。当第一次加载单元格时,
[cell1 viewWithTag:102]
或[forceDelaySlider.subviews lastObject]
是否返回nil
视图?最有可能的是,这两个选项中的一个在布局或渲染过程之后才存在
与其假设
[forceDelaySlider.subviews lastObject]
始终是拇指的UIImageView
,不如将UISlider
子类化,并添加自己的UILabel
子视图。然后可以根据从中返回的值更改其位置。在未来的iOS版本中,苹果对UISlider
类进行任何重构后,此实现都不会失效。我不知道这是否能解决您的问题,但最好在自定义单元格的init方法中添加带标签的滑块。您应该只需要添加目标操作,并在CellForRowatineXpath中设置滑块和标签的值。这会使控制器上的代码更清晰,而且无需检查您的单元格中是否已经有滑块。@rdelmar我感觉您的建议会work@rdelmar我将尝试一下,并再次告诉您,我尝试过对UISlider进行子类化,并通过覆盖UIlabel并使用相同的代码在子视图中添加标签,在init方法中添加UIlabel。它仍然提供相同的效果,没有变化。但是,您还提出了使用thumbRectForBounds:trackRect:value:的其他建议,效果非常好。我只是想通过将它添加为thumb的子视图来实现,因为不需要编写任何代码来调整标签的框架(有些代码是行不通的)。