View Controllerの変数をテキストまたはcsv(優先)ファイルに書き込みたいと思います。
確かに、私は描画アプリをやっています。そして、指の現在の位置をファイルに書きたいです。
class ViewController: UIViewController {var lastPoint = CGPoint.zeroPoint ... }
AppDelegateからlastPoint.xとlastPoint.yにアクセスしたいと思います。どうすればそれができますか?ありがとうございました。
あなたの質問は混乱に満ちていますが、もしそれがあなたが探しているものなら:
そのような参照を取得することでappDelegateにアクセスできます:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
その後、appDelegateにlastPointというプロパティを保存している場合、次のようにそのコンポーネントに簡単にアクセスできます。
let x = appDelegate.lastPoint.x
let y = appDelegate.lastPoint.y
AppDelegateからviewControllerプロパティにアクセスする必要がある場合は、appdelegateでView Controllerへの参照を持つことをお勧めします:
var myViewController: ViewController!
次に、View Controllerが作成されたら、appdelegateプロパティにそれへの参照を保存できます。
AppDelegateの外部でView Controllerを作成する場合:
Swift 1-2構文
var theViewController = ViewController()
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.myViewController = theViewController
Swift 3-4構文
var theViewController = ViewController()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.myViewController = theViewController
AppDelegate内にView Controllerを作成する場合:
self.myViewController = ViewController()
その後、次のようなプロパティにアクセスするだけで、appdelegateからViewControllerのデータにアクセスできます。
let x = self.myViewController.lastPoint.x
let y = self.myViewController.lastPoint.y
Swift 3アップデート
var theViewController = ViewController()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.myViewController = theViewController
BaseViewControllerを作成してこれを書くことができます
class BaseViewController {
lazy var appDelegate : AppDelegate {
return UIApplication.shared.delegate as? AppDelegate
}
}
baseViewControllerで他のViewControllerを継承し、これにアクセスします
class ViewController : BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
print(self.appDelegate?.lastPoint.x)
print(self.appDelegate?.lastPoint.x)
}}
次のように、AppDelegate.SwiftでViewControllerのインスタンスを作成することで、AppデリゲートからViewControllerにアクセスできました。
var mainViewController = ViewController()
func applicationWillEnterForeground(_ application: UIApplication) {
mainViewController.myVariable = "Hello".
}
それでも、私はAppDelegateがmainViewControllerがその特定のViewControllerを指すことになっていることをどのように「知る」のか理解していません。アプリケーションには単一のビューと単一のViewControllerがあるので問題ありませんが、異なるUIViewに関連付けられた複数のViewControllerがあったのは何ですか?ここの誰かがそれに光を当てることができれば感謝します。よろしく、アンドレ