xcode / स्टोरीबोर्ड: शीर्ष पर टूलबार पर बार बटन नहीं खींच सकता


99

मेरे पास एक व्यू कंट्रोलर है जो टेबल का डिटेल व्यू है। जब आप तालिका की पंक्ति पर क्लिक करते हैं तो यह आपको विस्तार के दृश्य में ले जाती है। विस्तार दृश्य एक नेविगेशन नियंत्रक में एम्बेडेड है जैसे कि नेविगेशन बार के ऊपरी बाईं ओर एक बटन है जो आपको टेबल पर वापस भेजता है। अब तक सब ठीक है।

अब मैं नेविगेशन बार के दाईं ओर एक एडिट बटन जोड़ना चाहता हूं ताकि आप डिटेल व्यू को एडिट कर सकें। मेरी योजना यह है कि आप एक और व्यू कंट्रोलर जोड़ेंगे जो आपको आइटम के विवरण को संपादित करने देता है। मानक सामान।

हालाँकि, जब मैं वस्तुओं की सूची से एक बार बटन आइटम को नेविगेशन बार में खींचने का प्रयास करता हूं, तो यह नहीं होगा। इसके बजाय, जब मैं माउस बटन को बंद कर देता हूं, तो यह नीचे की तरफ टैब बार कंट्रोलर पर बार बटन छोड़ देता है। (मेरी नेविगेशन स्कीम में अलग-अलग टैब शामिल हैं और प्रत्येक टैब के लिए एक टेबल, डिटेल व्यू आदि)

इससे पहले कि कोई भी इस पर दौड़ सकता है और यह सुझाव दे सकता है कि मैं गलत क्या कर रहा हूं या नेविगेशन स्क्रीन के दाईं ओर बार बटन आइटम जोड़ने के लिए किसी प्रकार का वर्कअराउंड कर रहा हूं। क्या मुझे इसे कोड में जोड़ना होगा?

किसी भी सुझाव के लिए धन्यवाद।


निम्नलिखित ट्यूटोरियल की जाँच करें brianflove.com/2012/10/01/…
casillas

मैं self.navigationItem.rightBarButtonItem = self.editButtonItem का उपयोग करके बटन जोड़ने में सक्षम था; और स्टोरीबोर्ड में नए editvc बनाया, लेकिन यकीन नहीं है कि कैसे segue बनाने के लिए। स्टोरीबोर्ड में नहीं कर सकते क्योंकि संपादन बटन दिखाई नहीं देता है, इसलिए मुझे लगता है कि यह कोड में होना चाहिए। तैयारी के लिए प्रयास करेंगे?
user1904273

यदि किसी एक उत्तर ने आपकी मदद की, तो आपको इसे स्वीकार करना चाहिए :)

जवाबों:


157

मुझे Xcode6 का उपयोग करके एक ही समस्या मिली है और मैंने देखा कि UINavigationItem को पहले ViewController के लिए स्वचालित रूप से जोड़ा जाता है जिसे आप नेवीगेशन कंट्रोलर में एम्बेड करते हैं लेकिन बाद के ViewControllers के लिए, आपको इसे मैन्युअल रूप से निम्नानुसार जोड़ना होगा।

  1. ऑब्जेक्ट लायब्रेरी में, नेविगेशन आइटम ढूंढें, फिर उसे स्टोरीबोर्ड में अपने 2nd ViewController पर खींचें।
  2. ऑब्जेक्ट लाइब्रेरी में, बार बटन आइटम ढूंढें फिर उसे नेविगेशन आइटम खींचें जो आपने पिछले चरण में बनाया है।

अब आपके पास आपके बार के बटन आपके सीन के ऊपर चिपक जाएंगे।

अपडेट समाधान अभी भी XCode 7 के साथ काम करता है लेकिन मैं और अधिक विवरणात्मक फोटो जोड़ना चाहता था। बस मामले में किसी को भी वास्तव में ऊपर उल्लेखित मानक या तकनीकी नामों से परिचित नहीं है। लाल तीर को दाईं ओर ध्यान दें, वे चरण 1 का उल्लेख करते हैं, चरण 2 ऊपर उल्लेख किया गया है। बाईं लाल आयत पर विचारों के पदानुक्रम पर भी ध्यान दें। यहां छवि विवरण दर्ज करें


2
हाँ, यह मेरे लिए किया था। मुझे लगता है कि यह सही उत्तर है, XCode नेविगेशन आइटम को बाद के ViewControllers में जोड़ने के लिए प्रतीत नहीं होता है।
जेरेमी चोन

यह सही है लेकिन छवि में लाल रंग का तीर ऑब्जेक्ट लाइब्रेरी में बार बटन आइटम से बाईं ओर लाल बॉक्स में जाना चाहिए।
मल्हल २

आप इसे कैनवास में और साथ ही लाल तीर द्वारा इंगित कर सकते हैं या जैसा कि आपने सुझाव दिया था, आप इसे दस्तावेज़ की रूपरेखा में छोड़ सकते हैं। इससे कोई फर्क नहीं पड़ता
वाल शोएयर

खुशी है कि बिल्ली के रूप में मुझे यह जवाब मिला क्योंकि यह बहुत अच्छा काम करता है - मैं सिर्फ इसलिए हैरान हूं कि UINavigationItem स्टोरीबोर्ड पर पहले से ही क्यों नहीं है? यह जाहिर तौर पर रनटाइम पर है, क्योंकि कोड self.navigationItem.rightBarButtonItem = ...काम करेगा। मैं UINavigationController के बारे में अनुमान लगा रहा हूं कि पहले वीसी ने इसे बाद के सभी कुलपतियों के स्टैक पर धकेल दिया। हालाँकि, मैन्युअल रूप से एक को वहां खींचकर, आप 2 UINavigationItems के साथ एक-दूसरे के ऊपर क्यों नहीं समाप्त होते हैं? जिसे आपने मैन्युअल रूप से घसीटा है, और जो पहले से ही UINavigationController है?
जेम्स टॉमी

70

गंदा चाल:

  1. पुश करने के लिए अपने सेगमेंट को बदलें।
  2. अपनी जरूरत की सामग्री सेट करें
  3. दिखाने के लिए वापस सेट करें

तब सामग्री संपादन योग्य हो जाएगी और आपके पास सेग के लिए एक गैर पदावनत शैली होगी।


यार, इतना बदसूरत। लेकिन यह Xcode 7.3UIBarButtonItem में एक व्यू कंट्रोलर पर काम करता है ।
मिखो

OMG, यह अभी भी XCode 8.2.1 में काम कर रहा है। इसे कब ठीक किया जाएगा? कभी नहीं, शायद
दीमा रोस्तोपिरा

यह एकमात्र तरीका है जिसे मैंने इसे कोड के बिना जोड़ा।
यहोशू

हे भगवान ... थैंक यू (y)
नासिर खान

मुझे विश्वास नहीं हो रहा है कि यह बग 2 साल से अधिक समय के बाद भी यहाँ है
कैरिओनी

33

आपके स्टोरीबोर्ड का व्यू कंट्रोलर संभवतः गायब है Navigation Item । आप ऑब्जेक्ट लायब्रेरी से एक को खींच सकते हैं, और इसे अपने व्यू कंट्रोलर पर छोड़ सकते हैं।

फिर आप नेविगेशन बार के बाईं या दाईं ओर बार बटन आइटम को खींचने और छोड़ने में सक्षम होंगे।


1
यह काम किया है, लेकिन मुझे लगता है कि यह तब तक स्वचालित रूप से किया जाता था जब तक कि आपके पास एक नियंत्रक के लिए एक धक्का देने वाला
तर्क था

यह सही उत्तर होना चाहिए। बाकी मुझे हैक लगता है
एमके युंग

23

मैंने इसे हल किया। 'नेविगेशन आइटम' को अपने विवरण दृश्य में खींचें। की तुलना में आप बार बटन आइटम में खींच सकते हैं।


8

जिस तरह से मैंने इस मुद्दे को तय किया, वह स्टोरीबोर्ड में एक UINavigationController को खींचने के बजाय और UIBarButtonItems को जोड़ने की कोशिश कर रहा था, मैंने UITableViewController में घसीटा और फिर

संपादक-> एम्बेड इन-> नेविगेशन नियंत्रक

इससे पहले कि मैं कोई समस्या नहीं के साथ नेविगेशन पट्टी के दोनों किनारों पर UIBarButtonItems को जोड़ सकता है को छोड़कर पहले जैसा ही परिणाम दिया।


आपको ऊपर जाना चाहिए !!
विन

5

यह वास्तव में xcode मुद्दा है। मेरे लिए काम करने वाली एक तरकीब है LEFT.Instaed को सीधे देखने पर जोड़ने के VIDE FILE STRUCTURE में बार बटन जोड़ना। आशा है कि यह आपकी मदद करता है। :)


यह काम! मुझे लगता है कि यह समाधान है जब तक Apple Xcode 8.2 के साथ बग को ठीक करता है
अर्जुन कालिदास

5

मुझे लगता है कि यह एक बग है। मुझे भी यही समस्या थी। मैंने इस समस्या को आकार वर्गों को अक्षम करके ठीक किया, फिर इसे सक्षम करें।

आप इंटरफ़ेस बिल्डर डॉक्टर में आकार वर्गों को अक्षम और सक्षम कर सकते हैं।

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


4

मेरे पास यह समस्या भी थी, परियोजना को बंद करना और फिर से खोलना मेरे लिए काम कर गया।


3

मेरा मानना ​​है कि यह एक XCode quirk है। मेरी भी यही समस्या थी। मुझे Xcode को रीसेट करना पड़ा और स्टोरीबोर्ड पर चीजों के प्लेसमेंट को अंत में स्थानांतरित करना पड़ा। अब यह काम कर रहा है।


3

मुझे लगता है कि यह Xcode का बग है। Xcode 8 में, segueटैब बार व्यू कंट्रोलर से पहले इसके सभी विकल्पों ( show detail, present...) से पहले स्टोरीबोर्ड में बदलाव करें । फिर वापस show। बार बटन आइटम को खींचें और टाइल को संशोधित करने का प्रयास करें। इससे मेरा काम बनता है!


1

क्या आपने अपनी परियोजना "सफाई" की कोशिश की? मुझे पता है कि मुझे कभी-कभी मदद मिलती है (बस "उत्पाद"> "क्लीन" पर जाएं)। या, वैकल्पिक रूप से, नेविगेशन बार को हटा दें और इसे फिर से आज़माएँ।

यदि आपको लगता है कि यह एक प्रोग्रामिंग त्रुटि है, तो अपने कोड पर पास होने के लिए स्वतंत्र महसूस करें। मुझे किसी भी तरह से मदद करने में खुशी होगी। :)


1

आपको xCode IDE रीसेट करना होगा। XCode को बंद करें और टर्मिनल पर नीचे दिए गए कोड लिखें ... यह काम करेगा।

rm -rf $HOME/Library/Application Support/Developer/Shared/Xcode
rm -rf $HOME/Library/Preferences/com.apple.dt.Xcode.*
rm -rf $HOME/Library/Saved\ Application\ State/com.apple.dt.Xcode.savedState
rm -rf $HOME/Library/Developer/Xcode

1

वही मुद्दा। मेरे पास एक नेविगेशन कंट्रोलर के अंदर एक टेबल व्यू कंट्रोलर और चेन के नीचे कई व्यू कॉन्ट्रॉलर्स हैं। FIRST रूट व्यू कंट्रोलर के लिए एक 'नेविगेशन आइटम' स्वचालित रूप से बनाया जा रहा था और मैं एक समस्या के बिना इसमें 'बार बटन आइटम' जोड़ सकता था। स्टोरीबोर्ड के माध्यम से, खींचें और छोड़ें। लेकिन यह सब। निम्नलिखित तालिका व्यू कंट्रोलर और आगे के कंट्रोलर पर, भले ही वे शुरुआती नेविगेशन कंट्रोलर (ऑटो जेनरेट बैक बटन दिखाई दें) के भीतर थे, स्टोरीबोर्ड ने मुझे बार बटन आइटम जोड़ने की अनुमति नहीं दी।

वाल शोएयर का समाधान मेरे लिए कारगर नहीं रहा। बार बटन आइटम दिखाई नहीं देंगे।

मैंने इसे अंत में प्रोग्रामेटिक रूप से हल किया (स्विफ्ट 2.0):

var testButton = UIBarButtonItem(title: "Test Button", style .Plain, target: self, action: "testButtonMethod")
self.tabBarController?.navigationItem.rightBarButtonItem = testButton

कोई अतिरिक्त नेविगेशन आइटम या बार बटन आइटम की आवश्यकता नहीं है।


1

मैं भी इसी समस्या का सामना कर रहा था। मैं रूट व्यू कंट्रोलर विकल्प का चयन करके इस समस्या को ठीक करने में सक्षम था और फिर नकली मैट्रिक्स में टॉप बार विकल्प को ओपेक नेविगेशन बार में बदल दिया और नेविगेशन बार के शीर्ष पर आइटम को जोड़ने में सक्षम था। यह उत्तर किसी की मदद करेगा।


1

मेरे पास xcode 8 में एक ही मुद्दा था। मुझे बस xcode बंद करना था और परियोजना को फिर से खोलना था और फिर मैं बिना किसी मुद्दे के रूट कंट्रोलर के बार बटन को जोड़ने में सक्षम था।


1

XCode 8 के लिए

यहाँ कई उत्तर हैं। मैंने उनमें से कुछ की कोशिश की, लेकिन मैं इसे नहीं बना सका। इसलिए मैंने अपना समाधान पाया, बस अपना चयन करें ViewController, एट्रीब्यूट्स इंस्पेक्टर अनुभाग पर जाएं और टॉप बार को अपारदर्शी नेविगेशन बार और बूम में बदल दें। आपको अपने स्टोरीबोर्ड पर नेविगेशन बार दिखाई देगा। आप शीर्षक बदल सकते हैं या कुछ आइटम जोड़ सकते हैं। यदि आप अपारदर्शी नहीं रखना चाहते हैं तो आप शैली को आस्थगित में बदल सकते हैं ।

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


1

Xcode 10 में, मैंने इस नए व्यू कंट्रोलर पर जाने वाले सेग के प्रकार को 'पुश (हटाए गए)' में बदल दिया, नेविगेशन आइटम को जोड़ा क्योंकि मैंने इसे स्विच करने के बाद अनुमति दी थी। यदि आप अपने मूल रूप से वांछित सेग प्रकार पर वापस जाते हैं, तो नेविगेशन आइटम रहेगा।


0

"बार बटन आइटम" को "नेविगेशन नियंत्रक" पर खींचने के बजाय, इसे "विस्तार दृश्य नियंत्रक" पर खींचें। जैसा कि आप "नेविगेशन दृश्य" में विस्तार दृश्य एम्बेड करते हैं, "नेविगेशन आइटम" को "विस्तार दृश्य नियंत्रक" में जोड़ा जाएगा। यदि आप "बार बटन आइटम" को नेविगेशन आइटम के दाईं ओर खींचते हैं, तो आइटम को "राइट बार आइटम" के तहत शामिल किया जाएगा।


0

जैसे मार्क ल्योंस ने कहा, मैंने उसी समाधान का उपयोग किया।

  • पहले पुश सेग का इस्तेमाल किया
  • बार आइटम जोड़ा
  • सेग शो करने के लिए वापस लौटें
  • किया हुआ

0

Xcode 11 में, आप अपना बार बटन बनाने के लिए एक बटन को नेविगेशन बार में खींच सकते हैं।

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