2010-02-15 60 views
0

我正在研究显示计划的应用程序。我没有问题显示项目列表。我的问题涉及在新的tableview上显示与上一次tableview的选择有关的信息。所有的同时不必做几百个tableviews(大名单的信息)。如何获取tableview来动态显示刚刚从另一个tableview中选择的信息?

因此,在短期我怎么告诉iPhone记得什么是刚刚选择,因此它可以从数据库基于什么只是选择显示的信息?

任何想法?

回答

1

这听起来像你试图将你的数据存储在tableViewController中。这是一个很大的错误。您的视图控制器应该只存储接口立即操作所需的临时数据。

相反,您需要创建一个包含所有应用程序数据的数据模型。它可以像内部数组的自定义类一样简单,也可以像大型核心数据图那样复杂。无论复杂性如何,关键概念是所有数据都被写入两个数据模型,在逻辑上进行处理并读出数据模型。应用程序的其他部分不直接操作数据。通过这种设计,视图控制器不必知道对方。他们只是询问数据模型需要显示哪些信息。

数据模型的一个关键特征是它不知道如何接收数据或如何显示或发送数据。一个结构良好的数据模型可以与GUI或命令行或任何其他人机界面一样工作。

在你的情况,你需要通过忽略数据的显示方式开始,而是问什么是你需要在两个不同的表来显示数据里面的逻辑关系。

例如,假设您的数据是一个简单的名称列表。用户需要创建该列表的子集,然后对该子集执行一些操作。你会写数据模型来存储和返回名称列表。然后你有一个子列表的属性。然后,您将在模型中定义一个方法,将所选名称从列表传递到子列表。

在您的用户界面中,您将拥有一个表,其控制器会将列表加载到表中并记录用户选择的行。然后控制器会调用数据模型方法将名称移动到子列表中。控制器唯一知道的是如何询问列表以及如何告诉数据模型哪个名称在哪里选择。它不知道还有什么其他用途会被用于数据。

第二控制器只知道数据模型的子表属性以及如何告诉用户选择在哪个子列表名称的数据模型。当它打开它的tableview时,它会在子表中填充名称,但知道其他视图做了什么。

如果您有详细视图,则重复该模式。数据模型记录了什么名称被任何接口选中。详细视图控制器只知道如何为所选名称和附加的数据请求数据模型。

这种设计使每个视图控制器独立于所有其他视图控制器。除了导航之外,视图控制器甚至不需要知道其他的存在。

该设计使应用程序模块化,易于维护和扩展。你的数据总是在一个地方,并有一个对象专门用来守护它并操纵它。如果数据出现问题,您确切知道在哪里寻找。

+0

答案与我需要的答案一样精确和完整。 (短的实际代码,这不是我所期待的) 非常感谢。 – JoshD 2010-02-15 21:24:53

+0

如果这是答案,请点击旁边的复选标记。我渴望代表点。 – TechZen 2010-02-16 13:40:14

0

您保存选择,让你从选择需要的任何信息,您的数据库调用。然后,您更新表或任何您必须显示数据库调用结果的视图。

如果你给我更多关于你的应用程序的结构和目的的细节,我可以充实我的答案,如果你需要更多的帮助。

相关问题