将数据从App委托传递到View Controller

Ale*_*lex 29 objective-c nsuserdefaults ios

我需要将一个字符串从App委托传递到我的初始视图控制器,有人可以列出我最好的方法,我也尝试使用NS用户默认值保存和检索,但我没有正常工作.

Ska*_*nda 29

接口:

@interface MyAppDelegate : NSObject  {
  NSString *myString;
}
@property (nonatomic, retain) NSString *myString;
...
@end
Run Code Online (Sandbox Code Playgroud)

在App Delegate的.m文件中,你会写:

@implementation MyAppDelegate
@synthesize myString;
    myString = some string;
@end
Run Code Online (Sandbox Code Playgroud)

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

MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
someString = appDelegate.myString;  //..to read
appDelegate.myString = some NSString;     //..to write
Run Code Online (Sandbox Code Playgroud)

  • 这篇文章刚刚结束了我的一天.非常感谢朋友. (2认同)

Rya*_*ske 18

这是Swift:

查看控制器

let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
Run Code Online (Sandbox Code Playgroud)

此外,如果您有一个想要在视图控制器之间传递的对象(例如,我有想要共享的CloudKit数据),请将其添加到App Delegate:

    /* Function for any view controller to grab the instantiated CloudDataObject */
func getCloudData() ->CloudData{
    return cloudDataObject
}
Run Code Online (Sandbox Code Playgroud)

然后返回View Controller

var model : CloudData = self.appDelegate.getCloudData()
Run Code Online (Sandbox Code Playgroud)


Odr*_*kir 14

您可以从app delegate访问这样的根视图控制器:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    MyViewController* mainController = (MyViewController*)  self.window.rootViewController;
    [mainController passData:@"hello"];

    return YES;
}
Run Code Online (Sandbox Code Playgroud)