[ios] दृश्य नियंत्रक पेश करते समय नेविगेशन और टैब बार लापता


Answers

इसलिए मुझे समाधान मिला जो मुझे आशा है कि आपके लिए काम करेगा।

पहले आपको अपना स्टोरीबोर्ड उदाहरण सेट करना होगा।

  let storyboard = UIStoryboard(name: "Main", bundle: nil)

इसके बाद आपको सेट करना होगा कि आप नेविगेशन कहाँ शुरू करना चाहते हैं।

let mynVC = storyboard.instantiateViewControllerWithIdentifier("root") as! UINavigationController

अभी आप दृश्य नियंत्रक सेट कर सकते हैं जिसे आप दिखाना चाहते हैं

let playVC = storyboard.instantiateViewControllerWithIdentifier("playVC")

तो और अब आप वर्कफ़्लो शुरू कर सकते हैं लेकिन ध्यान दें कि आपको ऐसा पूरा करने के लिए ऐसा करना होगा

 self.window?.rootViewController?.presentViewController(rootVC, animated: true, completion: { () -> Void in
            rootVC.pushViewController(playVC, animated: true)
        })

इसलिए आपका रूटव्यूकंट्रोलर आपको "रूटवीसी" पेश करेगा और इसके बाद आपका प्लेवीसी

मुझे आशा है कि यह आपको लोगों की मदद करेगी :)

Question

मैं 3 डी टच का उपयोग कर होम स्क्रीन शॉर्टकट को कार्यान्वित कर रहा हूं, और यह अच्छी तरह से काम कर रहा है, हालांकि जिस तरह से मैं वर्तमान में इसका मतलब है इसका मतलब यह है कि जब शॉर्टकट उपयोगकर्ता को एक विशिष्ट दृश्य नियंत्रक लेता है, तो टैब बार और नेविगेशन बार गायब हो जाता है।

यह मेरा कोड है:

func handleShortCutItem(shortcutItem: UIApplicationShortcutItem) -> Bool {
    var handled = false

    if let shortcutType = ShortcutType.init(rawValue: shortcutItem.type) {
        let rootViewController = window!.rootViewController

        switch shortcutType {
        case .Favourites:
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let rootController = storyboard.instantiateViewControllerWithIdentifier("favourites") as! FavouritesTableViewController
            rootController.parkPassed = DataManager.sharedInstance.getParkByName(NSUserDefaults.standardUserDefaults().stringForKey("currentPark")!)
            self.window?.rootViewController = rootController
            self.window?.makeKeyAndVisible()

            handled = true
        }
    return handled
}

क्या कोई सुझाव दे सकता है कि मुझे कोड में बदलने की क्या ज़रूरत है?

यह स्टार्बोर्ड लेआउट है (पसंदीदा ट्रेटीव्यूकंट्रोलर इंगित किया गया है):

संपादित करें:

यहां मेरा अपडेट कोड है:

@available(iOS 9.0, *)
func handleShortCutItem(shortcutItem: UIApplicationShortcutItem) -> Bool {
    var handled = false

    if let shortcutType = ShortcutType.init(rawValue: shortcutItem.type) {
        switch shortcutType {
        case .Favourites:
            print("favourites")
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let rootController = storyboard.instantiateViewControllerWithIdentifier("favourites") as! FavouritesViewController
            rootController.parkPassed = DataManager.sharedInstance.getParkByName(NSUserDefaults.standardUserDefaults().stringForKey("currentPark")!)

            let root = UIApplication.sharedApplication().delegate as! AppDelegate
            if let navCont = root.window?.rootViewController?.navigationController {
                navCont.presentViewController(rootController, animated: true, completion: nil)
            } else {
                root.window?.rootViewController?.presentViewController(rootController, animated: true, completion: nil)
            }

            root.window?.makeKeyAndVisible()

            handled = true
        }
    }
    return handled
}



यदि आप इसे इस तरह प्रयोग करते हैं तो आपको इस दृश्य नियंत्रक के लिए रूटव्यू की जगह दी जाएगी। तो यह एक नया एकल पृष्ठ होगा और इसके सामान्य होने के लिए नेविगेशन नियंत्रक या टैबबार नियंत्रक न हो क्योंकि आपके पास केवल दृश्य पदानुक्रम में केवल यह नया पृष्ठ है यदि आप इसे रूटव्यूव से प्रस्तुत करना चाहते हैं, तो आप कोशिश कर सकते हैं

 let root=UIApplication.sharedApplication().delegate as! AppDelegate
    if let navCont=root.window?.rootViewController?.navigationController
    {
        navCont.presentViewController(viewControllerToPresent: UIViewController, animated: true, completion: nil)
    }
    else{
        root.window?.rootViewController?.presentViewController(viewControllerToPresent: UIViewController, animated: true, completion: nil)
    }





Links