在第三个和第一个视图控制器之间传递数据

Posted

技术标签:

【中文标题】在第三个和第一个视图控制器之间传递数据【英文标题】:Pass data between third and first view controller 【发布时间】:2013-07-16 15:41:47 【问题描述】:

我有三个视图控制器,A、B 和 C。 A --modal--> B ---推送 --> C

如何从 C --> A 传递数据?我尝试过使用协议和委托。但是我在 A 中的委托方法永远不会被调用。

【问题讨论】:

您必须发布一些代码,否则没有人可以帮助您。 @jszumski:我还没有任何代码。我的问题是理论上的问题。如果 A 没有实例化视图控制器 C,A 如何知道在 C 中创建的数据? 在下面查看我关于使用 NSNotificationCenter 的回答。检查链接以获取详细信息,以确保它能够完成您需要完成的工作。 【参考方案1】:

您可以通过使用NSNotificationCenter 来执行此操作,请参阅this post,我遇到了类似的问题。这个问题可能并不完全适用,但答案为您提供了一个可能的解决方案。另请阅读here 了解更多数据。

【讨论】:

【参考方案2】:

或者您可以使用您的 AppDelegate 保存 A 的引用,然后从那里开始工作。

【讨论】:

【参考方案3】:

您可以在会话中存储数据(创建单例对象)并随心所欲地访问它

@interface Session : NSObject

+(Session*) session;

@property (nonatomic) id data_to_access;

@end

@implementation Session
+(Session *)session

    static Session *sharedSingleton;

    @synchronized(self)
    
        if (!sharedSingleton)
            sharedSingleton = [[Session alloc] init];

        return sharedSingleton;
    

@end

【讨论】:

以上是关于在第三个和第一个视图控制器之间传递数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 prepareForSegue 在视图控制器之间传递数据

如何在两个由UITabBarController分隔的视图控制器之间传递数据?

从视图控制器读取传递的数据

如何在 2 个不同的视图控制器之间传递信息?

在 Swift 中的页面视图控制器内的视图控制器之间传递数据

MVC 数据传递