【问题标题】:custom UITableViewCell with label and UISlider worked fine in 6 crashes in ios 7. ?? UITableViewCellScrollView?带有标签和 UISlider 的自定义 UITableViewCell 在 ios 7 的 6 次崩溃中运行良好。 ?? 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]: 无法识别的选择器发送到实例

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

【问题讨论】:

  • 这里有同样的问题!!
  • 您是否使用自定义滑块和您自己的动画?我是,动画不再工作。

标签: uitableview ios7 uislider


【解决方案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 条件设置这两个条件。

      【讨论】:

        猜你喜欢
        • 2014-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-09
        相关资源
        最近更新 更多