解释
我的应用程序基本上使用了一个地图视图,其中覆盖了代表建筑物的多边形,并加上了注释。为此,它导入一个名为“注释”的自定义类,该类在点击注释时处理弹出细节,这意味着它存储建筑物的名称和地址。此时,标注(蓝色泄露按钮)加载一个空的DetailViewController对象(因为实际上没有任何数据可传递)。
我很快添加了一个新特性,它的形式是一个可搜索的表,它加载了Building类的自定义对象(具有类似于注释的属性,加上图像和更多细节),然后在前面提到的DetailViewController类中加载该建筑物的详细信息。
总之,MapVC包含多个注释,当点击相关的公开按钮时,就打开DetailVC。SearchVC是通过MapVC上的一个按钮访问的,它有一个Building表,它用相关的数据加载DetailVC,如下所示:

下一步
所以现在我想在标注的蓝色公开按钮中实现功能,所以当用户点击它时,它将加载建筑细节。目前,它所拥有的只是注释的细节。我可以将额外的属性添加到注释中以使其完整,但我认为最好只使用一个名为Building的定制类,它具有MKAnnotation性质。然后为注释和searchVC的表加载这个Building类。
问题
那么最后,解决这个问题的最好方法是什么?我希望将所有数据独立于图表中的任何VC存储。我遵循了来自Apple ( BirdSighting one)的教程,它使用了一个单独的Datacontroller类,然后将其加载到其他类中。这是最好的办法吗?
发布于 2012-09-07 21:02:21
你说的是MVC,模型视图控制器。这是一种非常聪明的处理事情的方法,也是一个很好的练习。模型存储数据,在本例中,存储建筑物名称等。视图显示数据。控制器将视图连接到模型,更新视图,从用户获得通知,然后更新模型。
对于模型数据,我使用单例模式。应用程序中只有一个单例实例。这样,数据就不会绑定到任何一个特定的视图控制器。数据只更新一次,即模型。对于应用程序数据对象来说,用单一的收敛点来解决问题要容易得多。
我在PCH文件中定义了一个宏。
#import "DataController.h"
#define DATA() [DataController sharedInstance]在我的代码中,我可以通过调用
DataController *data = DATA();我所有的视图和视图控制器都访问存储在DataController中的对象,因此从来没有两个视图控制器独立地处理单独的信息。所有的参考资料都指向同一个地方。
有些人使用AppDelegate对象来存储数据,但它很快就会变成1000行。我更喜欢保持AppDelegate的清洁:-)
https://stackoverflow.com/questions/12325253
复制相似问题