प्रोग्रामिक रूप से नेविगेशन शीर्षक बदलना


187

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

मैं कोड का उपयोग करके पाठ को बदलने की कोशिश कर रहा हूं, जैसे:

declare navigation bar as navagationbar here
button stuff {
    navigationbar.text = "title"
}

यह स्पष्ट रूप से मेरा कोड नहीं है, बस यह दिखा रहा है कि यह कैसे काम करेगा।

इसलिए जब भी मैं बटन दबाता हूं, मैं चाहता हूं कि शीर्षक बदल जाए।

जवाबों:


537

आप दृश्य नियंत्रक का शीर्षक बदलकर शीर्षक को प्रदर्शित करते हैं:

viewController.title = "some title"

आम तौर पर दृश्य नियंत्रक पर लोड किए जाने को देखते हुए ऐसा किया जाता है:

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "some title"
}

हालाँकि, यह केवल तभी काम करता है जब आपके पास आपका व्यू कंट्रोलर UINavigationController में एम्बेडेड हो। मैं अत्यधिक की बजाय यह कर एक नेविगेशन अपने आप को बार बनाने की सलाह देते। यदि आप स्वयं नेविगेशन बार बनाने पर जोर देते हैं, तो आप ऐसा करके शीर्षक बदल सकते हैं:

navigationBar.topItem.title = "some title"

1
ViewController.type में शीर्षक नाम का कोई सदस्य नहीं है। यही त्रुटि मुझे मिली है।
राइजिंग

2
आप इसे सीधे कक्षा में नहीं बुलाते हैं। आप इसे UIViewController के एक उपवर्ग के उदाहरण पर कहते हैं
drewag

हां, ViewControllerकक्षा को ही संदर्भित करता है। आपको एक उदाहरण का उल्लेख करने की आवश्यकता है ViewController। अपनी कक्षा में एक विधि के भीतर से, जैसे कि viewDidLoad, आप इसका उपयोग कर सकते हैं self। यदि आप एक वर्ग और उदाहरण के बीच अंतर नहीं जानते हैं, तो मैं आपको यह जानने की सलाह देता हूं कि यह क्या है। यह लेख मदद करेगा।
drewag

Xcode में एक आकर्षण की तरह काम करता है .. बस एक छोटा सा परिवर्तन -> self.title = @ "कुछ शीर्षक";
सार

self.title = "कुछ शीर्षक" ने मेरे लिए काम किया। धन्यवाद ! मैं 'नेवीगेशन कंट्रोलर' .navigationItem.title = "कुछ शीर्षक" की कोशिश कर रहा हूं। वास्तव में यकीन नहीं है कि यह काम क्यों नहीं करता है। (मेरे पास एक नेविगेशन आइटम है, जिसे मैंने एम्बेडेड नेविगेशन नियंत्रक के अलावा, शीर्षक प्रदर्शित करने के लिए रखा है)। मुझे अभी भी लगता है कि यह काम करना चाहिए, लेकिन न जाने क्यों। एक बार फिर बचाव के लिए ढेर!
Naishta


13

नीचे कोड मेरे लिए Xcode 7 के साथ काम करता है:

override func viewDidLoad() {        
    super.viewDidLoad()
    self.navigationItem.title = "Your Title"
}

10

मुझे यह काम करने के लिए मिला:

navigationItem.title = "Title"

आप एक व्यू कंट्रोलर में शीर्षक को कैसे केन्द्रित करते हैं जो एक UINavigationController का बच्चा है? किसी कारणवश पाठ बाईं ओर संरेखित किया गया है। var customTitle = self.navigationController?.visibleViewController?.navigationItem customTitle?.title = "Some Title"
बिबसी

5

और यदि आप Navigation Barमैन्युअल रूप से बनाने की कोशिश करेंगे तो यह कोड आपकी मदद करेगा

func setNavBarToTheView() {
    let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 64.0))
    self.view.addSubview(navBar);
    let navItem = UINavigationItem(title: "Camera");
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel, target: self, action: #selector(CameraViewController.onClickBack));
    navItem.leftBarButtonItem = doneItem;
    navBar.setItems([navItem], animated: true);
}

4

आम तौर पर, सबसे अच्छा अभ्यास शीर्षक पर सेट करना है UIViewController। ऐसा करने से, UINavigationItemसेट भी किया जाता है। आम तौर पर, यह प्रोग्रामेटिक रूप से आवंटित करने और शुरू करने से बेहतर है UINavigationBarजो किसी भी चीज़ से जुड़ा नहीं है।

आप कुछ लाभों और कार्यक्षमता को याद करते हैं जिन्हें इसके UINavigationBarलिए डिज़ाइन किया गया था। यहाँ प्रलेखन के लिए एक लिंक है जो आपकी मदद कर सकता है। यह विभिन्न गुणों की चर्चा करता है जिन्हें आप वास्तविक बार और ए पर सेट कर सकते हैं UINavigationItem

बस ध्यान रखें:

  1. आप बैक बटन कार्यक्षमता खो देते हैं (जब तक कि आप इसे स्वयं तार नहीं देते)
  2. अंतर्निहित "बाईं ओर की ओर से स्वाइप बैक करने के लिए खींचें" इशारे को जब्त किया जाता है

UINavigationControllerआपके दोस्त हैं


4

उपयोग करने वाले लोगों के लिए सही उत्तर होने वाला

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.title = "Your Text"
}

3

स्विफ्ट 3

मैंने नेविगेशन टाइटल बार आइटम के लिए एक आउटलेट बनाया जो स्टोरीबोर्ड में नेविगेशन बार (ऑब्जेक्ट ब्राउज़र से) के साथ आता है। फिर मैंने नीचे की लाइन पर मुकदमा दायर किया:

navigationBarTitleItem.title = "Hello Bar"

2

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

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.parent?.title = "some title"
}

1

यदि आपके पास नीचे NavigationControllerएक TabBarControllerदेखें के अंदर एक एम्बेडेड है :

super.tabBarController?.title = "foobar"

यहां छवि विवरण दर्ज करें

आप डिबगर स्क्रिप्ट के साथ इस तरह के मुद्दों को डीबग कर सकते हैं। प्रयत्नछेनी के pvc आदेश को पदानुक्रम पर हर दृश्य / छिपे हुए दृश्य को मुद्रित करने का


0

स्विफ्ट 4 में:

स्विफ्ट 4

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Your title"
}

मुझे आशा है कि यह मदद करता है, का संबंध है!


2
यह स्वीकृत जवाब का सिर्फ आधा है। इसके अलावा, अगर आप कहते हैं कि कुछ भी नहीं बदला है, तो आप कुछ भी क्यों पोस्ट करेंगे ?! कृपया मिटा दे।
एरिक आया

@Moritz आप मॉडरेटर हैं या ऐसा कुछ? अगर हां, तो मैं इसे हटा दूंगा, अगर नहीं तो मैं इसे नहीं हटाऊंगा।
राडम्स ई। हर्नांडेज़

1
आप वास्तव में इसे कहते हैं? मेरे ऊपर, 4 पूरी तरह से समान उत्तर हैं, फिर आप मेरे साथ क्यों आते हैं और मुझे मिटाने के लिए कहते हैं? मैं एक विश्वसनीय उपयोगकर्ता हूं जो समुदाय का समर्थन करता है, मैं केवल दोहराए जाने वाले उत्तर के आसपास नहीं जा रहा हूं। मैं इस प्रश्न को अद्यतन स्विफ्ट संस्करण के साथ अपडेट करना चाहता था।
रेडम्स ई। हर्नांडेज़

3
आपके उत्तर में कुछ भी अपडेट नहीं है। यह स्वीकार किए गए उत्तर के समान कोड है, "आम तौर पर यह देखने में किया जाता है कि लोड किया गया है" भाग ...
एरिक आया

0

मैं नेविगेशन बार में शीर्षक प्रदान करने के लिए self.navigationItem.title = "Your Title Here"ओवर self.title = "Your Title Here"का उपयोग करना पसंद करता हूं क्योंकि टैब बार भी उपयोग करता हैself.title अपने शीर्षक को बदलने के लिए है। आपको एक बार निम्न कोड की कोशिश करनी चाहिए।

नोट: किसी भी सामान को करने से पहले सुपर व्यू जीवनचक्र को कॉल करना आवश्यक है।

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        setupNavBar()
    }
}

private func setupNavBar() {
    self.navigationItem.title = "Your Title Here"
}

0

स्विफ्ट 5.1

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "What ever you want"
}

0

स्विफ्ट 5.1

// नेवीगेशन टाइटल को प्रोग्रामेटिक और डायनामिक सेट करें

नोट: सबसे पहले अपने लिए नेविगेशनकंट्रोलर इटेम को जोड़ें और ViewControllerफिर अपनी ViewController.swiftफाइल और जस्ट कॉपी एंड पेस्ट को इसमें डालें viewDidLoad()

navigationItem.title = "Your Title Here"

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