切换时如何在UITabBar视图之间传递数据?

Posted

技术标签:

【中文标题】切换时如何在UITabBar视图之间传递数据?【英文标题】:How to pass data between UITabBar views when switching over? 【发布时间】:2014-01-29 12:48:08 【问题描述】:

我有 3 个 UITabBar 项目控制 3 个 UIView。其中一个是名为 A 的设置视图,我在此视图中设置了一些值并将输入的值传递给另一个名为 B 的视图。现在我已经有了 Delegate 方法,但我使用一个按钮来传递数据。现在我想在选择View B的UITabBar项时自动传递它。只是从A到B,而不是相互的。谢谢。

【问题讨论】:

使用单例类,对你有希望 如果您已经有委托,有什么问题? 是的。我不想使用按钮传递数据。我想要的是只需输入值并点击视图 B 的选项卡项,数据将自动传输。 看我的回答,代表不应该用于这种类型的“分享”。 【参考方案1】:

为什么不使用 NSUserDefaults。我已将字符串从一个视图传递到另一个视图

下面是你应该在 ViewController A 的 DidLoad() 方法中编写的代码

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:@"xyz" forKey:@"name"];
[defaults synchronize];

在 ViewController B 的 DidLoad() 方法中编写的代码

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *temp = [defaults valueForKey:@"name"]; 
NSLog(@"temp == %@",temp);

【讨论】:

我可以只使用 viewwilldisappear 委托并执行方法吗? 编辑了我的问题。您需要在 DidLoad() 方法中编写代码【参考方案2】:

你听说过

单身人士

它们用于在 Obj-c 中的类之间共享数据。有关如何设置它们的指南,请参阅:

http://www.galloway.me.uk/tutorials/singleton-classes/

这将有助于使您的类保持独立并强制执行 OO 方法来共享您的数据。

编辑:

我通过快速谷歌搜索找到了该网站,那里有大量资源可以帮助您。

【讨论】:

您看过链接指南上的 cmets 吗? “单例是 OO 等价的全局变量和所有需要的东西。”或者“单例是全局变量,应尽可能避免。它们会创建直接的实现依赖关系,并且在单元测试方面可能是一场噩梦。”【参考方案3】:

试试这个

NSArray *viewControllers = self.tabBarController.viewControllers;
ViewControllerB *b = viewControllers[1];
b.yourValue = yourValue;

【讨论】:

以上是关于切换时如何在UITabBar视图之间传递数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中的视图之间传递数据

swift 4 中使用 performSegue 打开的关闭页面时,如何在视图控制器和 TableViewController 之间传递数据?

如何在 Swift 中的视图控制器之间传递数据?

在多个视图控制器之间传递浮点数

如何在情节提要中的 2 个视图控制器之间传递数据?

当使用在swift 4中使用performSegue打开的dismiss页面时,如何在视图控制器和TableViewController之间传递数据?