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

Posted

技术标签:

【中文标题】带有标签和 UISlider 的自定义 UITableViewCell 在 ios 7 的 6 次崩溃中运行良好。 ?? UITableViewCellScrollView?【英文标题】:custom UITableViewCell with label and UISlider worked fine in 6 crashes in ios 7. ?? UITableViewCellScrollView? 【发布时间】:2013-10-01 14:08:14 【问题描述】:

我打算将此作为问题发布,但我解决了问题并认为我会分享它以防其他人遇到此问题。

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

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 为目标时,一切都很好

现在,在确定 200m+ 不会错后,我只是针对 iOS 7,突然我一接触我的 UISlider 就会崩溃

我收到此错误

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

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

【问题讨论】:

这里有同样的问题!! 您是否使用自定义滑块和您自己的动画?我是,动画不再工作。 【参考方案1】:

检查类我发现我期望的 SLiderCell 实际上现在是 UITableViewCellScrollView。 但是,如果您通过添加额外的 .superview 来提升另一个级别,您确实可以访问自定义 UITableViewCell 并且它现在可以再次工作

所以变化来自

SliderCell *theAnimalCell =(SliderCell*)sender.superview.superview;

到这里

SliderCell *theAnimalCell =(SliderCell*)sender.superview.superview.superview;

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

嗯,就是这样,希望这对那里的人有用。

西蒙

【讨论】:

【参考方案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];

【讨论】:

【参考方案3】:

是的,ios 7 中的原因是它从这里返回 UITableViewCellContentView:-

settingCustomCell *theAnimalCell =(settingCustomCell*)[[sender superview]superview];

所以要在 ios 7 中获取 UITableViewCell,只需将您的代码更改为:-

settingCustomCell *theAnimalCell =(settingCustomCell*)[[sender superview]superview]superview];

注意:-但是要忽略任何冲突,请根据 ios 条件设置这两个条件。

【讨论】:

以上是关于带有标签和 UISlider 的自定义 UITableViewCell 在 ios 7 的 6 次崩溃中运行良好。 ?? UITableViewCellScrollView?的主要内容,如果未能解决你的问题,请参考以下文章

具有居中 UISlider 和两个图像的自定义 UITableViewCell

UISlider 具有不均匀的步骤。

没有图像的自定义 UISlider

为自定义 UISlider 旋钮图像添加阴影?

iPhone 的自定义 UISlider

在 WooCommerce 产品页面中显示带有标签和值的自定义字段?