切换时如何在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 4 中使用 performSegue 打开的关闭页面时,如何在视图控制器和 TableViewController 之间传递数据?
当使用在swift 4中使用performSegue打开的dismiss页面时,如何在视图控制器和TableViewController之间传递数据?