我打算将此作为一个问题发布但我已经解决了,并且认为我会分享它以防其他人遇到此问题。
我有一个名为SliderCell的自定义tableViewCell。我在桌子上使用了许多SliderCell。
SliderCell包含一个UISlider和一个UILabel。
当用户移动滑块时,标签会更新为新值
这是在这个方法
- (IBAction)possibilityDidChange:(UISlider *)sender {
现在,在这种情况下,发件人是UISlider控件
要设置UILabel的值,我需要获取发件人所在的tableviewCell(sliderCell)。'
最初我得到如下
SliderCell *theAnimalCell =(SliderCell*)sender.superview.superview;
然后我可以像这样设置标签
theAnimalCell.sliderLabel.text = [NSString stringWithFormat:@"turtles %@",possibilityString];
当我使用Xcode 4.x并定位iOS6.1
时,一切顺利现在,在决定200米+不能出错之后,我只是针对iOS 7而且我突然碰到了碰到我的任何一个UISliders时发生了撞击
我收到此错误
[UITableViewCellScrollView currentSlider]:无法识别的选择器发送到实例
我在文档中找不到对此类的任何引用。
答案 0 :(得分:6)
检查类我发现了我期望成为SLiderCell的东西实际上现在是一个UITableViewCellScrollView。 但是,如果你通过添加一个额外的.superview上升到另一个级别,你就可以进入自定义UITableViewCell并且它现在可以再次运行
所以改变来自
SliderCell *theAnimalCell =(SliderCell*)sender.superview.superview;
到此
SliderCell *theAnimalCell =(SliderCell*)sender.superview.superview.superview;
我想如果你想支持iOS 7和iOS 6,你需要在尝试抓住自定义单元格之前进行检查。
嗯,就是这样,希望这证明对那里的人有用。
西蒙
答案 1 :(得分:2)
制造这样的条件。
AddTOcartCell *cell = ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) ? (AddTOcartCell*)textField.superview.superview.superview : (AddTOcartCell*)textField.superview.superview;
cell.btnUpdate.hidden=FALSE;
NSLog(@"Call Y%f",cell.frame.origin.y);
[tblProduct setContentOffset:CGPointMake(0,cell.frame.origin.y) animated:YES];
答案 2 :(得分:1)
是 ios 7 中的原因是它从此返回UITableViewCellContentView
: -
settingCustomCell *theAnimalCell =(settingCustomCell*)[[sender superview]superview];
所以要在 ios 7 中获取UITableViewCell
,只需将代码更改为: -
settingCustomCell *theAnimalCell =(settingCustomCell*)[[sender superview]superview]superview];
注意: - 但要忽略任何冲突,请根据ios条件设置这两个条件。