ios – 如何从App Delegate和或其他View Controller访问多个View Controller?

ios – 如何从App Delegate和或其他View Controller访问多个View Controller?,第1张

概述我怀疑这是一个非常简单的答案,或者我完全走错了路.我需要能够从App Delegate或其他视图控制器在视图控制器中设置变量和访问字段等. 以前我可以通过在’didFinishLaunchingWithOptions’中执行以下 *** 作,从App Delegate到我的第一个视图控制器: viewController = (ViewController *)self.window.rootViewCo 我怀疑这是一个非常简单的答案,或者我完全走错了路.我需要能够从App Delegate或其他视图控制器在视图控制器中设置变量和访问字段等.

以前我可以通过在’dIDFinishLaunchingWithOptions’中执行以下 *** 作,从App Delegate到我的第一个视图控制器:

vIEwController = (VIEwController *)self.window.rootVIEwController;

之后我可以通过正常的[vIEwController someMethod];来从App Delegate访问视图控制器中的方法.

如果我有多个视图控制器(目前有3个),我如何从其他位置访问其他视图控制器?顺便说一句,我已经找到了一些解释,但所有人都在讨论nib / xibs与代码的结合.我没有它们,我有一个故事板和代码(我是app dev的新手).

谢谢!

解决方法 在appDelegate中,您可以简单地声明将保存对此vIEwControllers的引用的属性.

例如:

在AppDelegate.h中

@property (nonatomic,strong) UIVIEwController *vc1;@property (nonatomic,strong) UIVIEwController *vc2;

在AppDelegate.m中

@synthesize vc1,vc2;

无论您在何处创建此vIEwControllers,都可以访问appDelegate并设置其属性以保留正确的引用.不要忘记将AppDelegate.h包含在此文件中.

UIVIEwController *someVC = [init vIEw controller....];AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];appDelegate.vc1 = someVC;

从那时起,您可以将此vIEwController作为appDelegate的属性进行访问.

编辑:对于storyBoarding,看起来这样做是安全的 – (voID)vIEwDIDLoad.

或者更好的方法是(如Richard提到的)在 – (ID)initWithCoder:(NSCoder *)解码器中执行此 *** 作

“当从故事板中实例化视图控制器时,iOS会通过调用其initWithCoder:方法来初始化新的视图控制器.”从documentation

但请注意,如果您要将任何数据从一个视图控制器更改为另一个视图控制器,您可能需要考虑将这些数据保存在代码的单独部分中(在模型 – 视图 – 控制器方法中称为模型).这是在vIEwControllers之间“交换”数据的最安全的方法.

总结

以上是内存溢出为你收集整理的ios – 如何从App Delegate和/或其他View Controller访问多个View Controller?全部内容,希望文章能够帮你解决ios – 如何从App Delegate和/或其他View Controller访问多个View Controller?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1013121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存