2012-04-24 16 views
5

के बाद विचारों में दिखाई नहीं दे रहा है, मैं एक आईफोन एप्लिकेशन बना रहा हूं, और अपने नेविगेशन बार की शीर्षकदृश्य स्थिति में एक लोगो प्रदर्शित करना चाहता हूं। मैं UINavigationController का एक उपवर्ग कर दिया है और viewDidLoad में निम्न पंक्ति कहा:नेविगेशन बार पर शीर्षकदृश्य segues

self.navigationBar.topItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titlelogo.png"]]; 

(यह सिर्फ एक लाइन के लिए बर्बादी की तरह लग सकता है, लेकिन मैं कई स्थानों में यह उपयोग कर रहा हूँ और मैं नहीं चाहता विभिन्न कारणों से [UINavigationBar उपस्थिति] का उपयोग करने के लिए)

यह नेविगेशन नियंत्रक के तत्काल बच्चे के लिए ठीक काम करता है - मुझे लोगो दिखाई देता है। हालांकि, जब मैं किसी अन्य दृश्य में सेग्यू को दबाता हूं, तो लोगो "समान" नेविगेशन नियंत्रक के हिस्से (मेरे ज्ञान के सर्वोत्तम) भाग के बावजूद नहीं चलता है।

(संदर्भ के लिए) -> MyNavigationController -> SomeViewController -> SomeOtherViewController

मैं भी एक साथ SomeOtherViewController की viewDidLoad में जाने की कोशिश की है:

self.navigationController.navigationBar.topItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titlelogo.png"]]; 

यह अभी भी लोगो प्रदर्शित नहीं करता है।

कुछ आसपास poking के बाद, मैं ने पाया है कि अगर 1) मैं navigationController के viewDidLoad में है कि रेखा की जरूरत नहीं है और 2) मैं SomeOtherViewController के viewDidLoad में दूसरी पंक्ति की क्या ज़रूरत है, तो:

प्रारंभ: देखने SomeViewController । कोई लोगो नहीं। segue को दबाए रखने के लिए क्लिक करें: गायब होने से पहले लोगो अब कुछ दृश्य नियंत्रक के बार पर दिखाई देता है। अब मैं कुछ अन्य दृश्य नियंत्रक देख रहा हूं: जिसमें कोई लोगो नहीं है। वापस क्लिक करें: कुछ दृश्य नियंत्रक के नेविगेशन बार में अभी भी लोगो है।

जाहिर है, मैं नेविगेशन नियंत्रक कैसे काम करता है इसके बारे में कुछ गलत समझ रहा हूं। क्या कोई मुझे बता सकता है कि इसे कैसे लगाया जाता है?

उत्तर

1

अगर मैं इसे सही समझता हूं तो आप इसे किसी अन्य दृष्टिकोण के साथ भी कर सकते हैं और पूरे नेविगेशनबार को किसी छवि के साथ प्रतिस्थापित कर सकते हैं? वहां आप अपना आइकन डाल सकते हैं।

क्योंकि पूरे नेविगेशनबार को बदलना काफी आसान है।

if ([self.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { 
    [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault]; 
} 

इस कोड को आप navigationController की viewDidLoad विधि में डाल की जरूरत है। फिर यह नेविगेशन नियंत्रक के ढेर पर आपके द्वारा ViewControllers में भी काम करना चाहिए।

0

self.navigationController.navigationBar.topItem.titleView = yourCustomView; 

की

self.navigationItem.titleView = yourCustomView; 

istead उपयोग करने के लिए प्रयास करें और सब पर self.navigationController.navigationBar.topItem.titleView स्पर्श नहीं करते। सबसे पहले मैंने उन दोनों को yourCustomView पर सेट करने का प्रयास किया, और मेरा कस्टम व्यू एक अलग दूसरे के लिए दिखाई दिया और फिर चला गया मुझे पता नहीं था कि :)

संबंधित मुद्दे