সুইফটে প্রথম ভিউ নিয়ন্ত্রণকারী থেকে নেভিগেশন বার কীভাবে লুকানো যায়?


258

আমি কীভাবে প্রথম ভিউকন্ট্রোলার বা একটি বিশেষ ভিউকন্ট্রোলার থেকে সুইফটে কোনও নেভিগেশন বারটি আড়াল করতে পারি?

আমি নিম্নলিখিত কোড ব্যবহার করেছি viewDidLoad():

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

এবং এছাড়াও viewWillAppear:

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

উভয় পদ্ধতিই সমস্ত ভিউকন্ট্রোলার থেকে নেভিগেশন নিয়ন্ত্রককে আড়াল করে।


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
এই উত্তরটি আরও দক্ষ। আপনার যুক্ত প্রতিটি নতুন ভিউকন্ট্রোলারের সাথে পুনরাবৃত্তি কোডটি ভাবুন। stackoverflow.com/a/39679506/5079380
আমর ElAdawy

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
ওভাররাইডিং সহ সুপার পদ্ধতিগুলি কল করতে ভুলবেন না: সুপার.ভিউ উইলঅ্যাপিয়ার (অ্যানিমেটেড) এবং সুপার.ভিউউইলডিস্পিয়ার (অ্যানিমেটেড)
নীলকুল

এটি কি আবার ফিরে আসা লিঙ্কটি সরিয়ে দেয়?
কনস বালাকেনা

আমি নিশ্চিত ছিলাম এটি ভিজ্যুয়াল স্তরের "সোয়াইপ ব্যাক" দিয়ে ভাল কাজ করবে না, তবে সবকিছু ঠিক আছে। ধন্যবাদ!
tzologa

পার্শ্ব নোট: 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 এ, আপনি নেভিগেশনবারহিডেন প্রোপার্টিও ব্যবহার করতে পারেন নেভিগেশন বারটি প্রদর্শন করতে বা আড়াল করতে

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

আইওএস 8 এ এটি পছন্দ করুন

navigationController?.hidesBarsOnTap = true

তবে কেবলমাত্র যখন এটি কোনও ইউআইএনএভিগেশন কন্ট্রোলারের অংশ হয়

আপনি এটি ফিরে চাইলে এটি মিথ্যা করুন


0

আমি উপরের একটি বৈকল্পিক ব্যবহার করি, এবং আমার অ্যাপ্লিকেশন বিভাগগুলি পৃথক পৃথক নাভাকন্ট্রোলারগুলিতে এম্বেড করার জন্য পৃথক করে থাকি। এইভাবে, আমাকে দৃশ্যমানতা পুনরায় সেট করতে হবে না। স্টার্টআপ সিকোয়েন্সগুলিতে উদাহরণস্বরূপ খুব কার্যকর।



0

দৃশ্যে সেটটি লুকানোর পদ্ধতিটি কল করুন এবং উপস্থিত হয়ে যাবে। আপনি যদি পদ্ধতিটিতে কল না করেন তবে এই স্থিতিটি মিথ্যা দিয়ে অদৃশ্য হয়ে যাবে bar

 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
উইন্ডো নিয়ামক কি?
এমবিএইচ

এটি ম্যাকোসের জন্য, আইওএস নয়
কোয়েনের জন্য।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.