J'ai besoin de passer une chaîne du délégué de l'application à mon contrôleur de vue initial, quelqu'un peut-il m'a répertorié la meilleure façon de le faire, j'ai également essayé d'enregistrer et de récupérer en utilisant NS Valeurs par défaut de l'utilisateur, mais je ne le fais pas ne fonctionne pas correctement.
Interface:
@interface MyAppDelegate : NSObject {
NSString *myString;
}
@property (nonatomic, retain) NSString *myString;
...
@end
et dans le fichier .m du délégué d'application, vous écririez:
@implementation MyAppDelegate
@synthesize myString;
myString = some string;
@end
Ensuite, dans le fichier viewcontroller.m, vous pouvez récupérer:
MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
someString = appDelegate.myString; //..to read
appDelegate.myString = some NSString; //..to write
Le voici pour Swift:
Afficher le contrôleur
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
De plus, si vous avez un objet que vous souhaitez passer entre les contrôleurs de vue (par exemple, j'avais des données CloudKit que je voulais partager) ajoutez-le à Délégué d'application:
/* Function for any view controller to grab the instantiated CloudDataObject */
func getCloudData() ->CloudData{
return cloudDataObject
}
Puis retournez dans le Afficher le contrôleur
var model : CloudData = self.appDelegate.getCloudData()
Vous pouvez accéder à votre contrôleur de vue racine comme ceci à partir du délégué de l'application:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
MyViewController* mainController = (MyViewController*) self.window.rootViewController;
[mainController passData:@"hello"];
return YES;
}
Utilisation de Swift 4.2:
Passage de données d'AppDelegate à ViewController:
let yourViewController = self.window?.rootViewController as? YourViewController
yourViewController?.passData(YOUR_DATA) // pass data
let data = yourViewController?.getData() // access data
Passage de données de ViewController à AppDelegate:
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.passData(YOUR_DATA) // pass data
let data = appDelegate.getData() // access data
Ajoutez le code ci-dessous à YourViewController ou AppDelegate:
private var data : String? // String? or any type you want
func getData() -> String? {
return data
}
func passData(_ data : String?) {
self.data = data
}