8

मेरे पास तीन वीसी का ढेर है जो नेविगेशन नियंत्रक के माध्यम से समन्वयित होते हैं और नेविगेशन बार का उपयोग करते हैं। इस नेविगेशन पट्टी पर, प्रत्येक कुलपति में, मैं एक ही बटन (एक 'लॉगआउट' बटन) एक सही बार बटन आइटम के रूप में कहा:आईओएस नेविगेशन बार दाएं बटन आइटम बदलाव नए दृश्य नियंत्रक को दबाते समय

UIBarButtonItem *logoutButton = 
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"") 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(logout)]; 

[categoriesViewController.navigationItem setRightBarButtonItem:logoutButton]; 
[[self navigationController] pushViewController:categoriesViewController animated:YES]; 

तो प्रत्येक दृश्य नियंत्रक नेविगेशन पट्टी में इस लॉगआउट बटन है। जब मैं इन नियंत्रकों में से किसी भी नेविगेशन स्टैक पर धक्का देता हूं, तो नया दृश्य नियंत्रक अपेक्षित रूप से लोड होता है, सबकुछ प्रदर्शित होता है और सही तरीके से कार्य करता है, लेकिन नए दृश्य नियंत्रक के बाद (एनीमेशन समाप्त होने के बाद) लॉगआउट बटन लगभग 3px तक जाता है सही।

मैंने वीसी को धक्का देने से पहले बटन को जोड़ने की कोशिश की है, वीडी के इनिट विधियों में, viewDidLoad और viewDidAppear में लेकिन फिर भी वही व्यवहार। मुझे इस बदलाव से छुटकारा नहीं मिल रहा है।

क्या अजीब बात यह है कि नया वीसी (डिफ़ॉल्ट एनीमेशन का उपयोग करके) को दबाते समय बैक बटन गायब हो जाता है और फिर से दिखाई देता है लेकिन 'लॉगआउट' बटन जगह पर रहता है और एनीमेशन खत्म होने के बाद बस दाईं ओर स्थानांतरित होता है। साथ ही, बटन पर फ़ॉन्ट डिफ़ॉल्ट फ़ॉन्ट नहीं है लेकिन सिस्टम फोंट (हेल्वैटिका लाइट) में से एक, इससे संबंधित हो सकता है।

यह क्यों हो रहा है पर कोई विचार?

+0

ऐसा इसलिए है क्योंकि मैं डिफ़ॉल्ट फ़ॉन्ट का उपयोग नहीं कर रहा हूं। किसी भी तरह, स्क्रीन पर एक अलग फ़ॉन्ट के साथ बटन को प्रस्तुत करते समय, इसके फ्रेम को पुनः संयोजित करने की आवश्यकता होती है - या यह मेरा सबसे अच्छा अनुमान है। –

+0

मुझे यह वही समस्या है - क्या आपने इसे ठीक करना समाप्त कर दिया? –

उत्तर

0

कोशिश बुला

self.navigationItem.rightBarButtonItem = yourUIBarButtonItem; 

भी क्या, अपने प्रस्थान करें बटन है यह सही वर्ग है? शायद थोड़ा और कोड?

1

मुझे एक ही समस्या थी। यह आपके रूटव्यू कंट्रोलर को सेट नहीं होने के कारण है। मुख्य पृष्ठ या पहला पृष्ठ सेट करें जहां आपकी पहली नेविगेशन बार रूटव्यू कंट्रोलर के रूप में उद्भव होगी। वहां से [self.navcontroller] pushviewcontroller ...]।