【问题标题】:How to structure moveable objects with MVC pattern?如何使用 MVC 模式构造可移动对象?
【发布时间】:2017-12-03 18:15:41
【问题描述】:

我正在开发一个 iOS 应用程序,它允许用户在屏幕上拖放图像作为其功能之一(注意——不是 iOS 11 应用程序之间的拖动)。每个图像是一个自定义模型Photo,然后一个Page 模型对象有一个Photos 数组。

我想拥有一个包含所有Photo 对象的PageEditor 视图,但我不确定如何最好地跟踪每个对象的x/y 位置。因为Photo 对象是一个结构,而不是一个视图,所以我需要让每个Photo 对象也有一个可拖动的自定义PhotoView

所以本质上,PageEditor 有一个Page,它有Photos。但是一个PageEditor也有一个PhotoViews的数组,那么哪个模型/视图应该知道它的定位?

我很欣赏这是一个相当抽象的问题。

【问题讨论】:

  • 抱歉,这就是您投反对票的原因。 更清楚。 也许尝试 (a) 不要含糊不清,并且 (b) 给我们一些足够具体的东西,我们可以重现。这是我从您的模糊问题中读到的内容-您如何跟踪存储在UIImageViews(但不一定在同一个数组中)中的“照片”数组或UIImages的帧来源,因为您有一个称为PageEditor的东西.我不知道我有多接近 - 但如果没有一些代码,我希望你能看到你的问题是多么“抽象”!祝你好运。
  • @dfd 我不确定如何更清楚。我有一个依赖于模型对象的 ViewController,而该模型对象又具有一组模型对象。你不能移动模型。您只能移动视图。那么,每个视图的底层模型是否应该知道它的位置呢?或者应该只有视图知道它的 x / y 坐标?
  • 你能在你的问题中发布一些代码吗?视图控制器需要知道任何子视图坐标的原因是什么?你想完成什么?在其父视图中移动子视图是(1)可以在 iOS 中完成一次一个 - 你不能一次拖动两个视图 - 并且控制器已经与手势正确连接知道正在移动哪个视图。在代码中,您知道手势的视图并使用它的标记值,可以很容易地识别。但同样,没有代码很难提供帮助。

标签: swift model-view-controller drag-and-drop


【解决方案1】:

您的照片对象可以包含两个 x,y 坐标点。照片的位置可以根据更新。

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

您可以在里面访问您的触摸位置

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

在 MVC 中,您的照片是一个模型。你的 PhotoView 是一个视图。

【讨论】:

    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多