【问题标题】:Passing Non-Static Objects Between View Controllers在视图控制器之间传递非静态对象
【发布时间】:2010-07-14 08:15:46
【问题描述】:

我是 iphone 开发和目标 c 的新手,但希望比我更聪明的人能伸出援手。这是我的问题:

我有一个基于视图的应用程序,其中包含大约 7 个不同的视图控制器。用户通过底部标签栏导航。我让用户在第一个视图控制器中将数据输入到名为“副本”的对象中。我需要将副本值传递给另一个控制器,以便它可以用于计算。对于应用程序中的许多对象,其他控制器也需要这样做。

例子:

用户在第一个视图控制器中输入副本值。
用户在第 6 个视图控制器中输入价格值。

第 7 个视图控制器计算副本 x 价格 = 总计

在我的研究中,我制定了单例方法,但这似乎仅限于静态数据。

确保另一个视图控制器可以访问用户填写的对象的最佳方法是什么?我目前正试图避免走 SQLite 路线。我想坚持一些基本的东西,并在复杂性上逐步提高。有人有我可以查看的示例代码吗?看看其他人以前是如何解决这个问题的,这真的很有帮助。

提前致谢!

【问题讨论】:

    标签: iphone objective-c uiviewcontroller


    【解决方案1】:

    如果我的理解正确,整个应用程序中只有一个 copies 值和一个 price 值。如果是这样的话……

    有很多方法可以做到这一点。最简单的方法(也许):您可以创建一个您定义的具有copiesprice 作为属性的类的单例对象。 Objective-C 中的 Singleton 是 here,你可以在 Singleton 类中定义你的属性。然后你只需调用它的共享实例并使用它的值。所以你的代码看起来像这样:

       [ThatCrazySingleton sharedInstance].copies = 5;
    

    写作。

    希望这就是你要找的。​​p>

    如果您不想使用 Singleton,则在某些时候,其中一个 UIViewController 需要向其他人发送一条消息,其中包含副本和价格值(希望将 ["encapsulated"] 包装在一个对象中)。这意味着您必须获得对其他 View 控制器的引用,您始终可以通过遍历层次结构来做到这一点。

    【讨论】:

    • 感谢您的快速回复。是的,“副本”只有一个常见对象,但值是用户输入。因此,我无法将其硬编码为“5”。听起来消息传递可能是要走的路。您是否有任何参考资料/示例代码可供我查看以了解更多信息?
    • 值是用户输入没问题。例如,您可以将它设置在按钮的 touchUpInside(因此可能是 [ThatCrazySingleton sharedInstance].copies = myTextField.text;)上,TextField 将连接到 IBOutlet。但你可能应该回去做一些基础教程,然后大部分内容可能会有意义。
    • 这是我无法解决的问题。这是我设置单例的类 MyManager.h MyManager.m 这是用户输入“副本”的类 UITextView SixthViewController.h SixthViewController.m 这是我需要显示副本值的地方。 SeventhViewController.h SeventhViewController.m 所以,我必须在#6 上创建一个按钮来在 MyManager 中设置一个值。它对我不起作用。如果您能详细说明您谈论的教程可能会有所帮助。
    • 我真的推荐 LeMarche (Apress) 入门 iphone 开发书籍来帮助您入门。
    • 感谢您的参考。我买了这本书,会好好读一读。与此同时,我将继续修补。
    猜你喜欢
    • 2018-06-22
    • 2020-06-07
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多