如何将数据从 AppDelegate 传递到 ViewController?
Posted
技术标签:
【中文标题】如何将数据从 AppDelegate 传递到 ViewController?【英文标题】:How to pass data from AppDelegate to ViewController? 【发布时间】:2012-12-03 05:18:54 【问题描述】:我正在使用 Safari 浏览网页。单击此页面上的按钮后,我的 Ipad 将启动我的应用程序。所以我在AppDelegate.m
中实现了方法- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
if (!url) return NO;
NSString *URLString = [url absoluteString];
self.paramArray = [URLString componentsSeparatedByString:@"@"];
NSLog(@"%d",[self.paramArray count]);
for (int i = 1; i < [self.paramArray count]; i++)
NSLog([self.paramArray objectAtIndex:i]);
return YES;
我在网页上使用的 url 类似于 myapp://@first_part@second_part@third_part
。 self.paramArray
存储url的子串(myapp://
first_part
second_part
third_part
)。
现在我想在我的ViewController
的文本字段中显示这些字符串。如何将此 NSArray 传递给ViewController
?
【问题讨论】:
【参考方案1】:这只是完成它所需的几行代码。
将此行放入 appDelegate.h 文件中
首先你需要遵守如下协议
@interface AppDelegate : UIResponder <UIApplicationDelegate>
现在需要声明一个属性供它使用,如下所示
@property (strong, nonatomic) id<UIApplicationDelegate>delagete;
现在在视图控制器中使用该属性的最后一个阶段如下
在视图控制器的.h文件中
首先引用 appdelegate 像这样#import "AppDelegate.h"
然后在@interface
AppDelegate *appDel;
中添加一个 iVar
现在在 .m 文件中
将appDel = [[UIApplication sharedApplication]delegate];
放在视图中确实加载方法并访问appdelegate 的所有属性,如appDel.paramArray
。
快乐编码:)
【讨论】:
你能给我更多的细节吗?比如我应该在哪里添加这些行? 这样可以吗?或需要更多信息? :) 我按照你说的做了。但是我的viewDidLoad
方法中的[appDel.paramArray count]
返回0
。什么时候会调用- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
?
paramArray 是不是在 appDelegate.h 文件中声明的(强、非原子)属性之一?
在视图加载并处于出现状态后,即在 viewDidAppear 中,我认为方法将非常适合这个:)以上是关于如何将数据从 AppDelegate 传递到 ViewController?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据库从 AppDelegate 传递到 ViewController
将数据从 ViewController 传递到 AppDelegate
如何将 CoreLocation 值从一个 VIewController 传递到 iOS 中的 AppDelegate?