通过Xcode中的多个故事板段传递数据

时间:2014-02-27 12:36:09

标签: ios objective-c object segue

我有一个表视图,它使用fetchedResultsController从核心数据管理一系列“Venue”对象。当您在表视图中选择其中一行时,它会将当前Venue对象传递给新视图(通过prepareForSegue),该视图显示Venue对象的详细信息:名称,地址,图像等。这一切都正常。

我有想要实现的东西,但我不确定最好或最常规的方法。我想要与上面相同的行为,但是将地图视图夹在初始表视图和详细视图之间。所以导航堆栈看起来像这样:

表格视图(显示所有场地) - >地图视图(显示所有场地) - >详细视图(显示一个选定的地点)

现在我有一个来自表格视图的按钮,它会移动到地图视图,传递一个注释数组,然后在地图上绘制。注释不包含所有场地信息,只是从每个场地分配标题和副标题。每个注释都显示链接到详细视图的详细信息披露按钮。但是,从概念上讲,从地图视图中选择时,如何将相关的Venue对象(目前仅在我的表视图中可用)传递给详细视图。

我的假设是我需要沿着这些方向做一些事情:将所有 Venue对象从我的表视图传递到我的地图视图,并让它们存在于后台但不被使用。然后,当按下公开按钮时,地图视图会以某种方式检查哪个Venue与所选注释匹配(检查标题属性是否匹配?)并将其作为“选定的场地”传递到详细视图。但是我不知道在实践中如何最好地做到这一点,或者即使我有正确的想法。我的注释是否可以包含整个相关的Venue对象?或者以详细信息视图以某种方式询问数据的初始表视图?

希望我能够清楚地解释这一点。对不起它有点罗嗦。我仍然是Xcode的新手,并且明白我可能会忽略一些非常简单的东西,或者在某个地方犯一个根本性的错误。任何建议都会非常感激!

3 个答案:

答案 0 :(得分:1)

如果您只有一个选定的对象,只需将其传递给地图视图即可。地图视图可以使用自己的获取结果控制器从数据存储中获取所需的任何其他数据(可能重要性顺序可能与表视图不同)。

您可以将场地对象与注释相关联,但似乎您只需要将一个场地传递给详细视图,因此它应该只存储为实例变量。

答案 1 :(得分:0)

创建一个模型,您可以通过其名称/ ID或其他内容查询场地。然后当你进入最后一个细节视图时,从地图视图中将场地名称/ id传递给它。 或者,正如您在问题中所建议的那样,将整个场地对象传递到地图视图,在此视图中使用此对象中的任何内容,当您切换到详细视图时,再次传递整个对象。

答案 2 :(得分:0)

你发布你的数据-prepareForSegue检查以下帖子

How to pass prepareForSegue: an object

您可以查看以下故事板示例

https://github.com/pandamonia/A2StoryboardSegueContext