带有标签和UISlider的自定义UITableViewCell在ios 7中的6次崩溃中运行良好.UITableViewCellScrollView?

Sim*_*ver 3 uitableview uislider ios7

我打算把它作为一个问题发布,但我把它解决了,并且认为我会分享它以防其他人遇到这个问题.

我有一个名为SliderCell的自定义tableViewCell.我在桌子上使用了许多SliderCells.

SliderCell包含一个UISlider和一个UILabel.

当用户移动滑块时,标签将使用新值进行更新

这是在这种方法中

- (IBAction)possibilityDidChange:(UISlider *)sender {
Run Code Online (Sandbox Code Playgroud)

现在,在这种情况下,发件人是UISlider控件

要设置UILabel的值,我需要获取发件人所在的tableviewCell(sliderCell).

最初我得到的如下

SliderCell *theAnimalCell =(SliderCell*)sender.superview.superview;
Run Code Online (Sandbox Code Playgroud)

然后我可以像这样设置标签

theAnimalCell.sliderLabel.text = [NSString stringWithFormat:@"turtles %@",possibilityString];
Run Code Online (Sandbox Code Playgroud)

当我使用Xcode 4.x并以iOS6.1为目标时,一切顺利

现在,在决定200米+不能出错之后,我只是针对iOS 7而且突然间我碰到任何我的UISliders时都会崩溃

我收到这个错误

[UITableViewCellScrollView currentSlider]:发送到实例的无法识别的选择器

我在文档中找不到对此类的任何引用.

Sim*_*ver 6

检查类我发现我期望成为SLiderCell实际上现在是一个UITableViewCellScrollView.但是,如果你通过添加一个额外的.superview上升到另一个级别,你可以进入自定义UITableViewCell,它现在再次工作

所以变化来自于

SliderCell *theAnimalCell =(SliderCell*)sender.superview.superview;
Run Code Online (Sandbox Code Playgroud)

对此

SliderCell *theAnimalCell =(SliderCell*)sender.superview.superview.superview;
Run Code Online (Sandbox Code Playgroud)

我想如果你想支持iOS 7和iOS 6,你需要在尝试获取自定义单元格之前进行检查.

嗯,就是这样,希望这证明对那里的人有用.

西蒙