7

में एक व्यू कंट्रोलर के नेविगेशन आइटम के बैकबैरबटन इटिम को कॉन्फ़िगर करना इंटरफ़ेस बिल्डर में स्टोरीबोर्ड में व्यू कंट्रोलर के नेविगेशन बार पर बार बटन आइटम ड्रैग और ड्रॉप करना काफी आसान है। इस तरह, आप व्यू कंट्रोलर के नेविगेशन आइटम के leftBarButtonItem और rightBarButtonItem आउटलेट सेट कर सकते हैं। लेकिन backBarButtonItem आउटलेट भी है, और यह बिल्कुल स्पष्ट नहीं है कि इसे कैसे सेट किया जाए। मैं इंटरफेस बिल्डर का उपयोग कर एक कस्टम बैक बार बटन आइटम कैसे सेट कर सकता हूं?स्टोरीबोर्ड

उत्तर

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

  • ऑब्जेक्ट लाइब्रेरी से ट्रे पर एक बार बटन आइटम खींचें और छोड़ें।

Storyboard view of a navigation controller and subordinate table view controller

  • बाएं हाथ की ओर पर मुख्य उद्देश्य ट्रे में दृश्य नियंत्रक के नेविगेशन आइटम पर राइट क्लिक करें। नेविगेशन आइटम के backBarButtonItem आउटलेट के रूप में नए जोड़े गए बटन को वायर करें।

Interface Builder screenshot illustrating how to wire up the back bar button outlet

  • बार बटन का चयन करें और किसी भी तरह से आप गुण निरीक्षक के साथ चयन में यह कॉन्फ़िगर करें।

Screenshot of the attributes inspector in Interface Builder showing options for the back bar button item

+4

मेरे नेविगेशन आइटम में पहले से ही 'बैकबर्टबटन इटिम' वायर्ड है (चूंकि यह पुश सेग का गंतव्य है) और यह अपरिवर्तनीय है। वास्तव में बैक बटन के शीर्षक को बदलने का कोई तरीका नहीं है - विशेषता निरीक्षक में "बैक बटन" फ़ील्ड सेट करने का कोई प्रभाव नहीं पड़ता है। – wcochran

+0

यदि आप समाधान चाहते हैं तो मैं आपको इसके लिए एक अलग प्रश्न बनाने के लिए प्रोत्साहित करता हूं और आपको इस प्रोग्राम को व्यावहारिक रूप से अपमानजनक बनाने का विचार मिलता है। दुर्भाग्य से, तुम्हारी एक ऐसी स्थिति है जिसे मैंने अभी तक नहीं सामना किया है। – warrenm

+1

@wcochran - यह मेरे साथ भी हुआ। यह एक्सकोड में एक छोटी निगरानी है, वर्कअराउंड ऑब्जेक्ट लाइब्रेरी में UIBarButtonItem चुनना है, फिर इसे UINavigationItem के बाएं बार बटन आइटम पर खींचें। आपको एक नीला आयत दिखाई देगा, फिर यह इसे सेट करेगा और आप इसे सामान्य रूप से कॉन्फ़िगर कर सकते हैं। –

1

इंटरफ़ेस बिल्डर में, आप नेविगेशन आइटम बैक बटन के शीर्षक को बदल सकते हैं।

प्रोग्रामेटिक रूप से, आप अपने व्यू कंट्रोलर के दृश्यडिडलोड विधि में एक कस्टम बैक बटन सेट कर सकते हैं। इस उदाहरण में हम "customImage.png" नाम एक छवि के लिए बटन की छवि को सेट करें:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStyleBordered target:self action:nil]; 

    // Set custom image here 
    backButton.image = [UIImage imageNamed:@"customImage.png"]; 
    self.navigationItem.backBarButtonItem = backButton; 
} 
+0

यह गलत है। इंटरफ़ेस बिल्डर के भीतर अन्य बटन गुणों को कॉन्फ़िगर करने के लिए मेरा उत्तर देखें। – warrenm

+0

@warrenm लिंक भी प्रदान करते हैं। तो उपयोगकर्ता सीधे यह जवाब प्राप्त कर सकते हैं। – Ayaz

+0

ठीक है, [यहां] (http://stackoverflow.com/a/9894298/155187)। – warrenm

16

@wcochran ऊपर बताया गया है, जब viewControllers के साथ काम करने के लिए एक navigationController के ढेर पर धक्का दे दिया, backBarButtonItem आउटलेट पहले से ही तार है और बदला नहीं जा सकता है। इसके अलावा, बच्चे वीसी के नेविगेशन इटैम का चयन करना और आईबी में बैक बटन टेक्स्ट को बदलना, जो आप उम्मीद करेंगे वह नहीं करता है।

अब आप सोच सकते हैं कि बच्चे वीसी के बैकबर्टन इटैम को बदलना समस्या को हल करेगा, लेकिन ऐसा नहीं है। (!) भी संदेहास्पद आप एक बच्चे कुलपति के वापस बटन का शीर्षक सेट करना चाहते हैं, तो आप ऐसा तरह, अपने माता-पिता के पीछे बटन शीर्षक सेट करने के लिए:

- (void)viewWillAppear:(BOOL)animated // in the parent VC! 
{ 
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; 
    self.navigationItem.backBarButtonItem = backButton; 
} 

यह काम नहीं चलेगा माता-पिता वीसी पर कुछ भी। असल में, यदि अभिभावक नेविगेशन नियंत्रक के रूट व्यू कंट्रोलर है, तो बैक बटन बिल्कुल नहीं होगा। लेकिन बच्चा आपके द्वारा बनाए गए बैक बटन को प्राप्त करेगा (या उठाएगा)।

यह केवल तत्काल बच्चे वीसी पर लागू होता है, इसलिए यदि आप नेविगेशन नियंत्रक के ढेर के माध्यम से लेबल को बनाए रखना चाहते हैं तो आपको इसे प्रत्येक माता-पिता पर सेट करने की आवश्यकता है।

मुझे यह समझाने के लिए # विहिनेव में @ विलीज़ के लिए धन्यवाद।

+0

मैं लंबे समय से आईओएस विकास के लिए वापस आ रहा हूं और सभी प्रगति के बावजूद हमें इस तरह के हैक करने की जरूरत है। आईओएस 3.1.2 से चीजें ज्यादा नहीं बदली हैं। इस उत्तर के लिए धन्यवाद। –

3

जैसा कि @AdamBlock ऊपर बताया गया है, आपको मूल VC में चीजों को सही सेट करना होगा।

वह दिखाता है कि इस प्रोग्रामेटिक तरीके से कैसे करें। इंटरफ़ेस बिल्डर में ऐसा करना भी संभव है।

  • माता पिता कुलपति
  • का चयन करें नेविगेशन आइटम
  • ओपन गुण निरीक्षक
  • बैक बटन के लिए शीर्षक सेट का चयन करें।