Je voudrais écrire dans le fichier texte ou csv (préfère) la variable du contrôleur de vue.
En effet, je suis en train de faire une application de dessin et je voudrais écrire dans le fichier la position actuelle du doigt.
class ViewController: UIViewController {var lastPoint = CGPoint.zeroPoint ... }
J'aimerais avoir accès à lastPoint.x et lastPoint.y à partir d'AppDelegate. comment je pourrais faire ça? Je vous remercie.
Votre question est pleine de confusion mais si c'est ce que vous recherchez:
Vous pouvez accéder à appDelegate en obtenant une référence comme celle-ci:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
après cela, si vous avez stocké une propriété appelée lastPoint dans votre appDelegate, vous pouvez accéder à ses composants très simplement comme ceci:
let x = appDelegate.lastPoint.x
let y = appDelegate.lastPoint.y
Si vous devez accéder à vos propriétés viewController à partir de AppDelegate, je vous conseille alors de faire référence à votre contrôleur de vue dans votre appdelegate:
var myViewController: ViewController!
ensuite, lorsque votre contrôleur de vue est créé, vous pouvez y stocker une référence dans la propriété appdelegate:
Si vous créez votre contrôleur de vue en dehors de votre appDelegate:
Syntaxe Swift 1-2
var theViewController = ViewController()
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.myViewController = theViewController
Syntaxe de Swift 3-4
var theViewController = ViewController()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.myViewController = theViewController
Si vous créez votre contrôleur de vue à l'intérieur de votre appDelegate:
self.myViewController = ViewController()
Après cela, vous pouvez accéder à vos données depuis votre viewcontroller à partir de votre appdelegate simplement en accédant à sa propriété comme ceci:
let x = self.myViewController.lastPoint.x
let y = self.myViewController.lastPoint.y
J'ai réussi à accéder à ViewController à partir du délégué de l'application en créant une instance de ViewController dans AppDelegate.Swift, comme suit:
var mainViewController = ViewController()
func applicationWillEnterForeground(_ application: UIApplication) {
mainViewController.myVariable = "Hello".
}
Néanmoins, je ne comprends pas comment AppDelegate "sait" que mainViewController est censé pointer vers ce ViewController particulier. Comme mon application a une seule vue et un seul ViewController, ça va, mais qu'est-ce que j'ai eu plusieurs ViewControllers associés à différentes vues UIV? Appréciez si quelqu'un ici peut nous éclairer .. Cordialement, .__ Andre
Mise à jour Swift 3
var theViewController = ViewController()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.myViewController = theViewController
Vous pouvez créer un BaseViewController et écrire ceci
class BaseViewController {
lazy var appDelegate : AppDelegate {
return UIApplication.shared.delegate as? AppDelegate
}}
et hériter d'autres viewcontrollers avec BaseViewController et y accéder par
class ViewController : BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
print(self.appDelegate?.lastPoint.x)
print(self.appDelegate?.lastPoint.x)
}}