3

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

我有一个名为 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]:无法识别的选择器发送到实例

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

4

3 回答 3

6

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

所以变化是从

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

对此

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

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

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

西蒙

于 2013-10-01T14:08:14.183 回答
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];
于 2014-01-28T07:32:14.890 回答
1

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

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

因此,要UITableViewCell进入ios 7,只需将您的代码更改为:-

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

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

于 2013-10-22T14:31:30.950 回答