Быстрое действие 3D Touch UIButton

Я создал приложение, которое имеет 4 кнопки UIB на начальном VC. Каждая кнопка переключается на другой VC(одинаковый во всех случаях), но с разными параметрами.

 @IBAction func googleBtnPressed(_ sender: AnyObject) {
    searchEngine = "Google"
    print(searchEngine)
    performSegue(withIdentifier: "google", sender: nil)

}

@IBAction func bingBtnPressed(_ sender: AnyObject) {
    searchEngine = "Bing"
    print(searchEngine)
    performSegue(withIdentifier: "google", sender: nil)

}

@IBAction func ddgBtnPressed(_ sender: AnyObject) {
    searchEngine = "DuckDuckGo"
    print(searchEngine)
    performSegue(withIdentifier: "google", sender: nil)

}

@IBAction func customBtnPressed(_ sender: AnyObject) {
    performSegue(withIdentifier: "custom", sender: nil)

}

if let vc = segue.destination as? ViewController {
            if searchEngine == "Google" {
                    vc.url = NSURL(string: "https://www.google.com")
                    vc.segueUsed = "google"
                    vc.searchEngine = "google"
            }

            else if searchEngine == "Bing" {
                    vc.url = NSURL(string: "https://www.bing.com")
                    vc.segueUsed = "google"
                    vc.searchEngine = "bing"
            }

            else if searchEngine == "DuckDuckGo" {
                    vc.url = NSURL(string: "https://www.duckduckgo.com")
                    vc.segueUsed = "google"
                    vc.searchEngine = "duckduckgo"
            }
        }

    }else if segue.identifier == "custom"{
        print(segue.identifier!)
        if let vc = segue.destination as? ViewController {
            vc.segueUsed = "custom"
        }
    }

Я хочу вызвать эти 4 кнопки с домашнего экрана с помощью быстрых действий 3d Touch. Я уже создал записи в файле info.plist, но борюсь с обработкой ответа в AppDelegate.swift.

<key>UIApplicationShortcutItems</key>
<array>
    <dict>
        <key>UIApplicationShortcutItemType</key>
        <string>$(PRODUCT_BUNDLE_IDENTIFIER).Google</string>
        <key>UIApplicationShortcutItemTitle</key>
        <string>Google</string>
        <key>UIApplicationShortcutItemIconType</key>
        <string>google</string>
    </dict>
</array>

Как мне это реализовать?

Спасибо за помощь.

1 ответ

let yourViewcontroller = self.window?.rootViewController// This view controller should be action view controller
        let itemKey = shortcutItem.userInfo["<YOUR KEY>"]
        if itemKey == "Google" {
            //call google action method
        } else if itemKey == "Bing" {
            //call Bing action method
        } else if itemKey == "Ddg" {
            //call "Ddg" action method
        }else if itemKey == "CustomButton" {
            //call CustomButton action method
        }

Примечание. Вы можете сохранить itemKey в ShortCutItemDictionary.

Другие вопросы по тегам