0

ダブルクリックして macOS アプリ (Swift 4.x) を起動するファイルの名前を取得するNSApplicationDelegateメソッドを実装しました。func application(_ sender: NSApplication, openFile filename: String) -> Boolただし、このメソッドが呼び出された後ViewController viewDidLoad()、すべての初期化コードが実行されるようです。初期化コードでファイル名を直接利用できるようviewDidLoad()に、クラスでファイル名を取得する方法はありますか?ViewController

アップデート:

AppDelegateSwift 4.2 のこのリンクからの提案にViewController基づいて、データを から に渡すことができるようになりました。

https://stackoverflow.com/questions/15049924/passing-data-from-app-delegate-to-view-controllerhttps://stackoverflow.com/questions/15049924/passing-data-from-app-delegate-to-ビューコントローラー

したがって、私の質問は、ファイル名を直接取得する方法、ViewDidLoad()または名前を取得して、呼び出されたときapplication(_, sender: NSApplication, openFile filename: String) -> Boolに渡すことができるようにする方法です。ViewControllerViewDidLoad()

4

1 に答える 1

0

私の問題を解決しました。で初期化コードを実行する代わりに、アプリの起動時と最初のイベントが発生する前に初期化を実行できるようにViewControllerコードを実装しました。AppDelegate applicationDidFinishLaunchingとにかく、これはAppDelegateアプリの初期化を処理するためのより適切な方法だと思います。このコード調整により、 と の間でデータを渡す必要性ViewControllerと、 の後に呼び出されるAppDelegate問題の両方が解決されます。application(_, sender: NSApplication, openFile filename: String) -> BoolViewDidLoad()

于 2019-03-14T23:25:51.700 に答える