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をターゲットにしているだけで、UISlidersのいずれかに触れるとすぐに突然クラッシュします

このエラーが発生します

[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];

したがって、ios 7 に入るUITableViewCellにはコードを次のように変更するだけです:-

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

注:-しかし、競合を無視するには、ios条件に従ってこれらの両方の条件を設定します。

于 2013-10-22T14:31:30.950 に答える