Passing Data from App delegate to View Controller

前端 未结 4 847
慢半拍i
慢半拍i 2020-12-05 09:55

I need to Pass an string from App delegate to my Initial View Controller , Can somebody listed me the best way to do it , also i tried to Save and Retrieve using NS user De

相关标签:
4条回答
  • 2020-12-05 10:19

    Using Swift 4.2:

    Passing Data from AppDelegate to ViewController:

    let yourViewController = self.window?.rootViewController as? YourViewController
    yourViewController?.passData(YOUR_DATA) // pass data
    let data = yourViewController?.getData() // access data
    

    Passing Data from ViewController to AppDelegate:

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.passData(YOUR_DATA) // pass data
    let data = appDelegate.getData() // access data
    

    Add below code to YourViewController or AppDelegate:

    private var data : String? // String? or any type you want
    func getData() -> String? {
        return data
    }
    func passData(_ data : String?) {
        self.data = data
    }
    
    0 讨论(0)
  • 2020-12-05 10:25

    Here it is for Swift:

    View Controller

    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    

    Furthermore, if you have an object that you want to pass between view controllers (for example, I had CloudKit data I wanted to share) add this to the App Delegate:

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

    Then back in the View Controller

    var model : CloudData = self.appDelegate.getCloudData()
    
    0 讨论(0)
  • 2020-12-05 10:27

    Interface:

    @interface MyAppDelegate : NSObject  {
      NSString *myString;
    }
    @property (nonatomic, retain) NSString *myString;
    ...
    @end
    

    and in the .m file for the App Delegate you would write:

    @implementation MyAppDelegate
    @synthesize myString;
        myString = some string;
    @end
    

    Then, in viewcontroller.m file you can fetch:

    MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
    someString = appDelegate.myString;  //..to read
    appDelegate.myString = some NSString;     //..to write
    
    0 讨论(0)
  • 2020-12-05 10:30

    You can access your root view controller like this from the app delegate:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        MyViewController* mainController = (MyViewController*)  self.window.rootViewController;
        [mainController passData:@"hello"];
    
        return YES;
    }
    
    0 讨论(0)
提交回复
热议问题