【问题标题】:passing data using delegates between viewcontrollers without any navigation controller connection在没有任何导航控制器连接的情况下使用视图控制器之间的委托传递数据
【发布时间】:2012-09-27 06:18:04
【问题描述】:

有很多在两个视图控制器之间传递数据的例子,其中一个视图控制器导航到另一个视图控制器。

但是是否可以使用自定义协议和委托在未通过导航控制器连接的视图控制器之间传递数据?

所以,一个例子可以是:三个视图控制器,即A,B,CA 导航到 BB 导航到 C。我知道如何使用自定义协议和委托在 AB 之间传递数据。但是我们可以在CA 之间传递数据吗?因此A 可以是C 的代表,从而可以从C 接收数据。这可能吗?

任何帮助将不胜感激。

【问题讨论】:

    标签: iphone objective-c ios ios5 ios4


    【解决方案1】:

    一种方法是使用委托向后传递数据

    请参阅 simple-delegate-tutorial-for-ios 链接以将数据从 C 控制器传递到 A 控制器。

    检查basic-delegate-example链接。

    另一种方法是发布通知。用于向后传递数据

    检查Comunicate-Two-Views链接。

    【讨论】:

    • 感谢您的早日回复。但在第一个示例中,两个视图控制器使用模态视图连接。第二个例子也是如此。
    • 是的,可以使用通知,但我想知道是否可以使用自定义协议和委托来实现。
    • 第二个例子不起作用,因为它们不继承自定义协议。嘿,我知道如何在使用导航控制器连接的两个视图控制器之间使用委托传递数据。
    • 我在谈论反向消息传递(数据传递)
    • 是的,反向消息传递本身。所以 A 导航到 B。使用委托 B 可以传递给 A。但我想知道 C 和 A 之间的关系。
    【解决方案2】:

    您可以使用一些单例类并在其中实现委托协议。因此,您将有机会在任何视图控制器之间传递数据。

    【讨论】:

    • 你能解释一下吗。
    • 好的。 Singleton 是一种只有一个实例的设计模式,您始终可以从代码中的任何位置调用它。因此,在您的方案 A、B 和 C 视图控制器中出现了一个 D 类,它可以访问任何控制器,即使没有与 navigationController 连接
    • 这是单例的例子 NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults]; NSNotificationCenter* notificationCenter = [NSNotificationCenter defaultCenter]; UIApplication* myApplication = [UIApplication sharedApplication];
    • 是的,使用单例和实用程序类我们可以实现这一点。同样,我们可以使用通知,但这些是替代方案。我们不能使用委托和协议传递吗?
    • 您能描述一下代表和协议是什么意思吗?
    【解决方案3】:

    对于将数据从第二个视图控制器发送到第一个控制器,请使用以下 github 项目:-

    https://github.com/mauli787/CustomDelegateDataPassing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多