3

UIStepper を持つ UITableViewCell があります。ステッパー値が変更されると、メソッドがトリガーされます。

-(void) stepperDidStep: (UIStepper*) sender

送信者から UITableViewCell を取得する必要があります。

iOS7 まで、このコードは正常に機能しました。

-(void) stepperDidStep: (UIStepper*) sender
{
 UITableViewCell *cell = (UITableViewCell*) sender.superview.superview;
 //...
}

さて、iOS7 + Autolayout では、次のようになります。

UITableViewCell *cell = (UITableViewCell*) sender.superview; 

セルはUITableViewCellContentViewです

UITableViewCell *cell = (UITableViewCell*) sender.superview.superview;

セルはUITableViewCellScrollView (???)

質問: iOS7 でステッパーからセルを取得する最良の方法は何ですか?

ありがとう

ニコラ

4

3 に答える 3

0

スーパービューをチェックしてセルを取得しないでください。頼りにならない。セルには、事態をさらに複雑にする隠しビューがいくつかあります。

代わりに、UIStepper をサブクラス化し、それに UITableViewCell のカスタム プロパティ (おそらく弱参照) を与え、UIStepper の設定時にそれをセルに設定し、stepperDidStep: メソッドが呼び出されたときにセルを取得します。

何かのようなもの:

@interface CellStepper : UIStepper
@property (nonatomic, weak) UITableViewCell* cell;
@end

.

-(void) stepperDidStep: (CellStepper*) sender
{
 UITableViewCell *cell = sender.cell;
 //...
}
于 2013-10-02T14:56:33.293 に答える