如何从AppDelegate.m中将NSString等数据发送到Objective C中的ViewController.m

时间:2016-11-30 06:49:04

标签: ios objective-c xcode

我需要从didReceiveRemoteNotification方法中的AppDelegate.m传递NSString数据并将其发送到我的ViewController。每次收到通知时,我都需要将NSLog放在viewDidAppear中。

7 个答案:

答案 0 :(得分:0)

您可以通过向ViewControler

的头文件添加属性来完成此操作
@property NSString *data;

然后在你的AppDelegate.m中加载ViewController时可以设置属性的值

self.YourViewController.data = @"Your String";

答案 1 :(得分:0)

<强>接口

@interface MyAppDelegate : NSObject  {

}
@property (nonatomic, retain) NSString *myString;
...
@end

并在AppDelegate的.m文件中写下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
        MyViewController* mainController = (MyViewController*)  self.window.rootViewController;
        self.myString = @" Here your String ";

        return YES;
}

然后,在viewcontroller.m文件中,您可以获取:

MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
someString = appDelegate.myString;  //..to read
appDelegate.myString = someString;     //..to write
NSLog(@"mystring is :- %@",appDelegate.myString);

答案 2 :(得分:0)

在AppDelegate.h文件中添加前3行

#define theAppDelegate \
((AppDelegate *)[UIApplication sharedApplication].delegate)

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong,nonatomic) NSString* strLoadApi; // create one property that you want to use in another viewcontoller.

任何viewcontoller都可以设置该值,并且必须在访问/获取值之前设置。

theAppDelegate.strLoadApi = @"Hello";

任何viewcontoller都可以获得

之类的值
NSLog(@"%@",theAppDelegate.strLoadApi);

答案 3 :(得分:0)

首先,您需要在AppDelegate.h中获取属性

@property(nonatomic) NSString *yourProperty;

然后在AppDelegate中将值赋给该属性。

然后在您的ViewController中,您可以访问该属性:

AppDelegate * del = (AppDelegate*)[UIApplication sharedApplication]. delegate

NSString *str = del.yourProperty

现在使用此str在UI上显示。

答案 4 :(得分:0)

每当你想传递NSString时添加这段代码

 //find ur viewcontroller and set parameter
 for (UIViewController *view in self.navigationController.viewControllers) {
    if (view isMemberOfClass:[yourViewController class]) {
        yourViewController *yview = (yourViewController *) view;
        yview.parameter = @"string";
        break;
    }
}

在yourViewController中为参数

设置getter setter

答案 5 :(得分:0)

这是对@Himanshu的答案的扩展,如果您在NSString中获得了AppDelegate,并且需要保留以进一步保留NSDictionary使用,您可以创建属性并存储它。您可以通过多种方式存储/检索值(例如:AppDelegate)。所以选择一个能让你以后生活更轻松的那个。

然后,您可以获取AppDelegate.h的共享对象并访问该属性。

添加他的代码,以便为将来的读者提供。

  1. @property (strong, nonatomic) NSString *strResponse;

    中添加媒体资源

    AppDelegate.h

  2. 将其添加到#define theAppDelegate ((AppDelegate *)[UIApplication sharedApplication].delegate)(导入语句后)

    的顶部

    self.strResponse = @"some response";

  3. 更新字符串值。

    内部AppDelegate.m

    theAppDelegate.strLoadApi = @"some good response";

    外部AppDelegate.m

    NSLog(@"%@",theAppDelegate.strLoadApi);

  4. 您可以在需要时访问它。

    SELECT target_financial_advisor, acquiror_finanial_advisor, target_nation, acquiror_nation, rank_value, rank_date FROM ma_global WHERE target_nation = 'France' AND acquiror_nation = 'France' AND EXTRACT(YEAR FROM "rank_date") = 2013 AND rank_date IS NOT NULL GROUP BY target_financial_advisor, acquiror_finanial_advisor LIMIT 50;

  5. <子> P.S。这不是实现这一目标的最佳方式。它实际上不推荐,但我相信,你正在学习iOS。所以它是你开始的基础。但是,您应该阅读此answer,以便为将来的发展做好准备。

答案 6 :(得分:0)

NSString *sData = @"data";
[[NSUserDefaults standardUserDefaults] setObject:sData forKey:@"keyName"];
[[NSUserDefaults standardUserDefaults] synchronize];
to get it back later

NSString *sData = [[NSUserDefaults standardUserDefaults]
    stringForKey:@"keyName"];