バックグラウンド:
MVC ベースのポラロイド オブジェクトがあります。モデルは、写真のメタデータと画像を保持します。ビューには、写真の名前と画像が表示されます (UIView 経由)。コントローラーはモデルとビューにアクセスし、それらの間の操作を調整します (例: ビュー上のモデル写真のフェードイン)
私の目的:
プログラムに簡単なドラッグ アンド ドロップ機能を実装して、ユーザーがポラロイドのビューとビューコントローラーをアルバムにドラッグできるようにしたいと考えています。
問題:
ポラロイドのビューに UIPanGestureRecognizer を追加できました。ただし、polaroidPanned メソッドからビューコントローラーまたはモデルにアクセスできません。
UIPanGestureRecognizer の追加:
UIPanGestureRecognizer *panRecogniser = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(polaroidPanned:)];
[polaroidController.polaroidView addGestureRecognizer:panRecogniser];
UIPanGestureRecognizer ハンドラは次のとおりです。
- (void) polaroidPanned: (UIPanGestureRecognizer *) panGesture
{
CGPoint touchLocation = [panGesture locationInView:self.view];
//While being dragged
if ([panGesture state] == UIGestureRecognizerStateBegan || [panGesture state] == UIGestureRecognizerStateChanged)
{
//update the album view to the touch location
[panGesture view].center = touchLocation;
}
else if ([panGesture state] == UIGestureRecognizerStateEnded && isOntopOfAlbum)
{
//HERE I WANT TO PASS THE VIEW CONTROLLER OF THE [panGesture view] to my album
[album addPolaroidViewController: ????]
}
}
ビューを渡すことはできますが、ビューの ViewController を参照できないようです。
どうすればこれを達成できるか知っている人はいますか? またはそれを回避しますか?