ViewController
私のアプリケーションのエントリは、2つのボタンで構成されています:weight
とage
。メインではViewController
、これはweight
ボタンをクリックしたときに実行されるコードです。
@IBAction func weightSearch(_ sender: Any) {
//Weight button clicked
inputReset()
userInput.keyboardType = UIKeyboardType.numberPad
userInput.becomeFirstResponder()
}
そして、これはage
ボタンをクリックしたときに実行されるコードです。
@IBAction func ageSearch(_ sender: Any) {
//Age button clicked
inputReset()
userInput.inputView = agePicker
userInput.becomeFirstResponder()
}
私は何をしようとしていることは2つの3Dタッチ迅速な行動、と呼ばれる1実装であるWeight Search
(のためのコードを実行されるfunc weightSearch
)と呼ばれる他のAge Search
(ためのコードを実行するがfunc ageSearch
)。これが私がこれまでにしたことです:
Info.plist
ファイルでUIApplicationShortcutItems
は、2つItems
のタイプの辞書とそれぞれのUIApplicationShortcutItemTitle
およびを含む配列を作成しましたUIApplicationShortcutItemType
。私のAppDelegate.swift
ファイルには、予備のクイックアクションコードを追加しました。
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
//3D touch features
}
今の私の問題は、自分のAppDelegate.swift
ファイルにどのコードを書くべきかわからないということです。私が見たすべてのチュートリアルとこのサイトのすべての同様の質問ViewController
は、同じ `ViewControllerで異なる関数を呼び出すのではなく、クイックアクションを使用して異なるものを呼び出すことを扱っています。前もって感謝します。
iOSはAppDelegate
、ユーザーがクイックアクションを選択したことを通知しているため、自由に好きなことを行うことができます。あなたへの参照を取得するには、(これがあなたになります)をViewController
要求することができます。そうすれば、必要なことを自由に行うことができます。window
rootViewController
ViewController
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
guard let viewController = window?.rootViewController as? ViewController else { return }
viewController.performSomeAction()
}
また、将来的に別のタイプのView Controllerをルートとして使用するように変更した場合、デバッグモードで実行すると、これを少し将来にわたって保証してクラッシュする可能性があります。
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
guard let viewController = window?.rootViewController as? ViewController else {
assertionFailure("Wrong view controller type!") // This only crashes in debug mode
return
}
viewController.performSomeAction()
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加