2017-12-03 4 views
0

私はiOSアプリを開発しています。そのアプリでは、ユーザーが画面上で画像をドラッグアンドドロップできるようになっています(アプリケーション間でのiOS 11ドラッグではありません)。各画像はカスタムモデルPhotoであり、Pageモデルオブジェクトの配列はPhotoです。MVCパターンで可動オブジェクトを構造化する方法は?

私はPhotoオブジェクトのすべてを含むPageEditorビューを持っていると思っていましたが、各オブジェクトのx/yの位置をどのように把握するのがよく分かりません。 Photoオブジェクトはビューではなく構造体なので、私はそれぞれPhotoオブジェクトにもドラッグ可能なカスタムPhotoViewを持っている必要があります。

本質的に、PageEditorは、Pageであり、これはPhotoです。しかし、PageEditorPhotoViewの配列を持っているので、どのモデル/ビューがその位置を知っているべきですか?

これが可能な限り明確でない場合は、コメントを入力してください。これは非常に抽象的な質問です。そして、私は再検討することを嬉しく思っています。

+0

申し訳ありませんが、それがあなたの投票を無効にする理由です。 *もっと明確にする*(a)あいまいではない、(b)私たちが再現できるだけ具体的なものを私たちに与えるようにしよう。あなたのあいまいな質問から読んだのは、 'UIImageViews'に格納された"写真 "や" UIImages "の配列のフレーム起源をどのように追跡していますか(必ずしも同じ配列ではない)です。なぜなら、あなたは' PageEditor' 。私はどれくらい近づいているのか分かりませんが、いくつかのコードがなくても、抽象的な**と**あなたの質問があいまいであることがわかりました。がんばろう。 – dfd

+0

@dfdもっと明確にする方法がわかりません。モデルオブジェクトの配列を持つモデルオブジェクトに依存するViewControllerがあります。モデルを移動することはできません。ビューは移動のみ可能です。したがって、各ビューの基礎となるモデルがその位置を知っていればよいでしょうか?ビューはそのx/y座標を知っていなければなりませんか? – user1947561

+0

あなたの質問にいくつかのコードを投稿できますか?ビューコントローラがサブビュー座標を知る必要がある理由は何ですか?あなたは何を達成しようとしていますか?そのスーパービューでサブビューを動かすことは、(1)一度に1つ* iOSで何かできるのですか? - 一度に2つのビューをドラッグすることはできません。そして、ジェスチャーで適切に配線されたコントローラーは、移動した。コードでは、ジェスチャーのビューを知っていて、そのタグ値を使用すると簡単に識別できます。しかし、もう一度、それはコードなしで助けになるのは難しいです。 – dfd

答えて

0

写真のオブジェクトには、2つのx、y座標が含まれます。写真の位置は、に基づいて更新することができます。あなたの内側

func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent) 

はMVCで

for touch in touches { 
    touch.position(in:self) 
    // update Photo x,y 
} 

であなたのタッチの場所にアクセスすることができ、あなたの写真がモデルです。 PhotoViewはビューです。

関連する問題