2011-07-08 8 views
1

私は私がクリックしたときの画像が選択されると、UIImagePickerControllerを開き、必要があることをUIImageViewを持つシンプルなアプリを書いていますからUIImagePickerは、単にUIImageViewオープンUIImageView

にその画像を割り当てる必要があります私はUIImageViewをサブクラス化し、ImagePickerを開くtouchesBeganを与えて始めました。

私の質問は、UIViewControllerだけがpresentModalViewControllerを呼び出してimagePickerを表示できるので、どうすればよいですか?

あなたのビューの参照をコントローラーにするのは間違ったデザインです(私のイメージビューはサブビューだと思いますが)。だから私はどのように私はコントローラにメッセージを渡すだろうか分からない。

もう1つの選択肢は、コントローラーのタッチを最初に検出することですが、タッチがイメージビューにあるかどうかを確認するための唯一の方法は、タッチがイメージビューのフレーム内にあるかどうかを実際にテストすることです。このアプローチは私にとっては厄介なようだ...私は何か明白なものを逃している?

どの方法を使用するか、より良い方法についてのご意見をお待ちしております。ありがとう!

答えて

1

UIImageViewをサブクラス化する必要はありません。メインUIViewのサブビューとして、UIViewControllerを追加し、をUIImageViewに追加することができます。その後、UIImageViewトリガーをタップまたはスワイプする方法はUIViewControllerにありますので、そこからモーダルビューを簡単に表示できます。

+0

これは最もクリーンなソリューションのようです。私はそれを試してみます – wallacer

+0

は素晴らしい働いた!ありがとう – wallacer

0

UIImageViewサブクラスを初期化するときに、イメージビューをロードするビューコントローラへの参照を渡します。

次に、UIImageView内のタッチアップで、そのView ControllerでpresentModalViewControllerを呼び出すことができます。

0

これを行う目的のCの方法は、ビューコントローラが実装するカスタムデリゲートを宣言することです。あなたの場合は、viewTappedのようなものがあります。あなたのカスタムクラスをクリックするたびに、このデリゲートメソッドを呼び出させます。

次に、ビューコントローラにこのデリゲートを実装させ、デリゲートメソッドが呼び出されたときにモーダルビューコントローラを起動します。