【问题标题】:MVC in iOS: How to identify which model object corresponds to a touched view?iOS中的MVC:如何识别哪个模型对象对应于触摸的视图?
【发布时间】:2013-05-23 15:28:27
【问题描述】:

我正在开发一款游戏,该游戏由放置在游戏区域中的一堆卡片组成。每张卡片都是 UIView 的子类。我也在 Core Data 模型对象中跟踪每张卡片的位置,因此我可以在它移动的任何时候保存它的位置。

我试图保持良好的 MVC 分离,但我想知道在控制器中识别哪个模型对象对应于卡片视图的最佳方法是什么。即,当卡片视图在游戏区域上移动时,它的平移手势识别器调用控制器中的方法。然后此方法应更新卡片模型对象中的新位置坐标(并将卡片保存到数据库中)。

我可以想到几种方法来提供视图到模型的参考:

  • 将卡片模型对象存储在每个卡片视图对象的属性中。 (但这会将模型放在视图中,不是吗?)
  • 将卡片模型的 URL 标识符存储在卡片视图对象的属性中。 (与之前相同,但只是一个参考,重量更轻)
  • 创建字典查找 控制器中的表,将卡片视图映射到卡片模型对象。 (太笨重了?)

有没有更好的方法?你会怎么做?

【问题讨论】:

    标签: ios model-view-controller binding


    【解决方案1】:

    我要做的是复制表格视图的行为。

    您可以有一个方法要求每张卡片,并在该方法中创建并返回从视图控制器(控制器)中的核心数据(模型)检索到的卡片(视图)

    应该从绘制游戏区域的类中调用该方法。

    希望对你有帮助

    【讨论】:

    • 谢谢,但问题是当有人与卡片视图交互时,我需要知道与它关联的模型对象。困难不在于将每个模型的卡片视图放在屏幕上。例如每张卡片都有一个点击手势识别器。当调用识别器的操作方法时,我需要在该方法中找出哪个模型对象与该视图一起使用。目前,对于卡片视图,我将 UIView 子类化并赋予它模型对象类的属性。这样,我就有了一个指向关联模型对象的直接指针。但这加入了模型和视图。有没有更好的办法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多