स्विफ्ट में पहले ViewController से एक नेविगेशन बार कैसे छिपाएं?


258

पहली बार में मैं एक नेविगेशन बार को कैसे छिपा सकता हूं या फिर किसी विशेष व्यू-कंट्रोलर को स्विफ्ट में देख सकता हूं?

मैंने निम्नलिखित कोड का उपयोग किया है viewDidLoad():

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.isNavigationBarHidden = true
}

और इस पर भी viewWillAppear:

override func viewWillAppear(animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}

दोनों विधियाँ नेविगेशन कंट्रोलर को सभी ViewControllers से छिपाती हैं।


1
आपको इसे सभी
दर्शकों के

जवाबों:


320

यदि आप जानते हैं कि अन्य सभी विचारों को बार दिखाई देना चाहिए, तो आप viewWillDisappearइसे फिर से दृश्यमान करने के लिए उपयोग कर सकते हैं ।

स्विफ्ट में:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: animated)
}

1
यह उत्तर अधिक कुशल है। आपके द्वारा जोड़े गए प्रत्येक नए ViewController के साथ दोहराए जाने वाले कोड के बारे में सोचें। stackoverflow.com/a/39679506/5079380
अमृत ​​एलआदवी

252

स्विफ्ट 3

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // Hide the navigation bar on the this view controller
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    // Show the navigation bar on other view controllers
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}

3
ओवरराइड करने के साथ सुपर तरीकों को कॉल करना न भूलें: Super.viewWillAppear (एनिमेटेड) और super.viewWillDisappear (एनिमेटेड)
NielsKoole

क्या यह उस लिंक को हटा देता है जो वापस कहता है?
कंस तुलाणा

मुझे विश्वास था कि यह दृश्य स्तर पर "स्वाइप बैक" के साथ अच्छी तरह से काम नहीं करेगा, लेकिन सब कुछ ठीक है। धन्यवाद!
तजोगा

साइड नोट: self.जरूरत नहीं
फेयर

स्वाइप बैक पर, नेविगेशन बार के साथ दृश्य से छिपे हुए नेविगेशन बार के साथ दृश्य में, हम नेविगेशन बार हेडिंग को कैसे पुन: लागू करते हैं?
टी। ओखरा

77

आप को छुपा सकते हैं navigationControllerमेंviewWillDisappear

override func viewWillDisappear(animated: Bool)
{
    super.viewWillDisappear(animated)
    self.navigationController?.isNavigationBarHidden = false
}

स्विफ्ट 3

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}

21

आप इसके लिए एक एक्सटेंशन भी बना सकते हैं ताकि आप हर व्यू कंट्रोलर में बार-बार इसे लागू किए बिना एक्सटेंशन का फिर से उपयोग कर पाएंगे।

import UIKit

extension UIViewController {
    func hideNavigationBar(animated: Bool){
        // Hide the navigation bar on the this view controller
        self.navigationController?.setNavigationBarHidden(true, animated: animated)

    }

    func showNavigationBar(animated: Bool) {
        // Show the navigation bar on other view controllers
        self.navigationController?.setNavigationBarHidden(false, animated: animated)
    }

}

तो आप नीचे दिए गए विस्तार विधियों का उपयोग कर सकते हैं

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        hideNavigationBar(animated: animated)
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        showNavigationBar(animated: animated)
    }

7
वास्तव में विस्तार के लायक नहीं है, क्या यह है? :)
जॉरिस वीमर

3
यह निर्भर करता है कि आप कितने बार छुपा रहे हैं / नौसेना सलाखों को दिखा रहे हैं। मुझे लगता है कि ज्यादातर मामलों में आप केवल पहले एक को छिपाते हैं लेकिन अगर आप इसे करते हैं तो बहुत अच्छा है।
jnwagstaff

निश्चित रूप से, यह इसके लायक नहीं है। पहले से मौजूद कुछ का आविष्कार न करें।
थैफर शाहीन

8

स्विफ्ट 3 में, आप नेविगेशन बार को दिखाने या छुपाने के लिए NavigationBarHidden Property का उपयोग कर सकते हैं

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // Hide the navigation bar for current view controller
    self.navigationController?.isNavigationBarHidden = true;
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    // Show the navigation bar on other view controllers
   self.navigationController?.isNavigationBarHidden = false;
}

3

स्विफ्ट में नेविगेशन बार दिखाने के तरीके:

self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBar.isHidden = false
self.navigationController?.isNavigationBarHidden = false

3

स्विफ्ट में नेविगेशन बार को छिपाने के तरीके:

self.navigationController?.setNavigationBarHidden(true, animated: true)
self.navigationController?.navigationBar.isHidden = true
self.navigationController?.isNavigationBarHidden = true

1
self.navigationController? .setNavigationBarHidden (सच्चा, एनिमेटेड: सच) मेरे लिए काम किया
Nate Uni

0

IOS 8 में इसे पसंद करते हैं

navigationController?.hidesBarsOnTap = true

लेकिन केवल जब यह एक UINavigationController का हिस्सा है

जब आप इसे वापस चाहते हैं तो इसे गलत बना दें


0

मैं ऊपर दिए गए संस्करण के एक संस्करण का उपयोग करता हूं, और अपने ऐप के अलग-अलग अनुभागों को अलग-अलग NavControllers में एम्बेड किया जा सकता है। इस तरह, मुझे दृश्यता रीसेट करने की आवश्यकता नहीं है। उदाहरण के लिए, स्टार्टअप दृश्यों में बहुत उपयोगी है।


0
 private func setupView() {
        view.backgroundColor = .white
        navigationController?.setNavigationBarHidden(true, animated: false)
    }

0

दिखने में सेट छिपाने की विधि को कॉल करें और प्रकट हो जाएगा। यदि आप विधि को कॉल नहीं करेंगे, तो स्थिति झूठी होने के साथ गायब हो जाएगी। यह नेविगेशन बार को पूरी तरह से नेविगेशन पदानुक्रम में छिपा देगा

 override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.setNavigationBarHidden(true, animated: true)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.setNavigationBarHidden(false, animated:true)
}

यह एक कॉपी / पेस्ट प्रतिक्रिया है। यहाँ आपकी प्रतिक्रिया और अन्य 2 या 3 समान प्रतिक्रियाओं के बीच क्या अंतर है ??
स्टारस्की

-3

आप इसे खिड़की नियंत्रक (स्विफ्ट 3) से कर सकते हैं

class WindowController: NSWindowController {

    override func windowDidLoad() {
        super.windowDidLoad()

        window?.titleVisibility = .hidden
    }
}

4
विंडो कंट्रोलर क्या है
MBH

यह macOS के लिए है, iOS के लिए नहीं
कोएन।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.