4

を持つUIView呼び出しImageShowcaseを作成し、継承されたクラス呼び出しUIScrollViewを追加しています。その正常に動作します。私が困惑していることの1つは、継承されたクラスでアクションを処理できるときに現在追加しているView Controllerでアクションを処理するための最良の方法ですが、適切なアクションを実行できるように処理したいと考えています。UIButtonImageShowcaseCellImageShowCaseUIControlEventTouchUpInsideUIButtonImageShowcaseCellView Controller

これを達成するための最良の方法は何でしょうか。

4

3 に答える 3

4

カスタム ImageShowcaseCell クラスでは、アクションをレスポンダー チェーンに送信し、View Controller がそれを処理できるようにすることができます。

[[UIApplication sharedApplication] sendAction:@selector(someMethodOnMyViewController:) to:nil from:self forEvent:nil];

あるいは、次のものも使用できます。

  1. デリゲート パターン - ビュー コントローラーを ImageShowcaseCell のデリゲートとして設定します。
  2. カスタムクラスでブロックベースのメソッドを作成して、タッチ後にブロックを実行します。
于 2012-11-19T20:18:38.733 に答える
1

少し遅れましたが、レスポンダーチェーンを使用してImageShowCaseCellボタンにアクションを追加してみませんか? 次のように追加すると:

[imageShowCaseCellInstance setTarget:nil action:@selector(methodYouWantCalledOnYourViewController) forControlEvents:UIControlEventTouchUpInside

あなたimageShowCaseCellInstanceがこのメソッドを実装しておらず、View Controller が実装している限り、ビュー コントローラの階層内にある限り、レスポンダ チェーンはこれを (nilに指定されているためtarget) ビュー コントローラに渡す必要があります。ImageShowCaseCell

エドウィンの答え ( https://stackoverflow.com/a/13461504/482557 ) は機能しますが、ボタンにターゲットを設定することで、より明確にすることができます。

于 2016-04-22T16:00:40.447 に答える
0

デリゲートを使用して実装しました。view controllerforには既に 1 つのデリゲートがありましたImageShowCase。だから私がしたことは、ImageShowcasefor に別のものを追加しましたImageShowcaseCell。次にUIControlEventTouchUpInside、ImageShowcaseCell から ImageShowcase にイベントを渡し、ImageShowcaseそれを に渡しview Controllerます。

ImageShowcaseCell (TouchUpInside) ----> ImageShowcase ----> ViewController

きれいにできませんでした。:)

于 2012-11-19T21:11:57.090 に答える