0

ClassAとClassBの2つのクラスがあります

ClassAはClassBのメソッドを呼び出します:-(void)someMethod:(id)sender

上記のメソッドでは、ClassBから送信者を取得し(送信者はUIButtonを持つUIViewのサブクラスです)、[sender updateButtonImageWithImage:image]の行に沿ったものを使用してボタン画像を更新する必要があります。

(UIViewサブクラスのメソッドは次のとおりです。-(void)updateButtonImageWithImage:(UIImage *))

しかし、ClassBからこれを呼び出すと、アプリが[UIButton updateButtonImageWithImage:]認識されないセレクターでクラッシュします。

私は何が間違っているのですか?

4

1 に答える 1

2

送信者は、UIButton を持つ UIView のサブクラスです。

これは正しくありません。ボタンがトリガーするものである場合、-someMethod:それを含むビューではなく、ボタンsenderが に渡され-someMethod:ます。これを行う最も簡単な方法は、ボタンのスーパービュー (ビューのサブクラスである必要があります) を取得し、それを呼び出す-updateButtonImageWithImage:ことです。

[(MyViewSubclass *)[sender superview] updateButtonImageWithImage:image];
于 2012-03-01T01:04:34.490 に答える