2011-06-15 15 views
6

मेरा ऐप एक टैब बार आर्किटेक्चर पर आधारित है। एक आसान अंतर्राष्ट्रीयकरण मैकेनिक होने के लिए, मैं XIB फ़ाइलों में कोई स्ट्रिंग नहीं लिखता हूं। व्यूडिडलोड दृश्यों को स्ट्रैंग्स को प्रोग्रामेटिकल बदलने के लिए अनुमति देता है।प्रोग्रामिंग के अनुसार UITabBarItem शीर्षक सेट करें?

जब मेरा ऐप लॉन्च होता है, तो मैं 4 टैब देख सकता हूं। लेकिन वास्तव में केवल पहला व्यक्ति इसके व्यू कंट्रोलर को लोड करता है। अन्य लोग लोड होने के लिए क्लिक करने के लिए प्रतीक्षा करते हैं। टैब सेट शीर्षक [self setTitle: @ "Mouhahaha"] का उपयोग करके बदला जा सकता है; लोड दृश्य दृश्य नियंत्रक के didLoad देखें।

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

मैं प्रत्येक टैबबारिटम के लिए इस शीर्षक प्रोग्रामैटिक सेट करने का एक तरीका ढूंढ रहा हूं। क्या आपके पास संकेत हैं?

बहुत बहुत धन्यवाद।

kheraud

उत्तर

1

तुम सब, UITabBarController का एक उदाहरण बनाने रहा है तो किसी भी विचारों आप इसे में चाहते alloc, तो UITabBarController विचारों सेट करना होगा। सुनिश्चित करें कि आपका TabBarController दृश्यमान है। यह भी सुनिश्चित करें कि आपके टैब बार में जो भी दृश्य नियंत्रक आप चाहते हैं उन्हें #import के साथ आयात किया जा रहा है।

UITabBarController *c = [self tabBarController]; 
SecondViewController *s = [[SecondViewController alloc] init]; 
[s setTitle:@"Whatever"]; 
c.viewControllers = [NSArray arrayWithObjects:self, s, nil]; 
[s release]; 

इसे पहले नियंत्रक आवंटित के दृश्य लोड विधि में रखें।

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

आशा इस मदद करता है

+0

यह काम करता है लेकिन यह बहुत ही सिर्फ जटिल कुछ लेबल बदलने के लिए है ... मुझे लगता है कि एप्पल हम tabbaritem का उपयोग नहीं चाहता है – iwalktheline

+0

ठीक है, टी के कुछ की तुलना में वह अन्य सामान जो करते हैं, यह एक कैकवॉक है :-) –

+0

क्या होगा यदि ViewController के बजाय NavigationViewController है। – dreamBegin

2

स्टोरीबोर्ड के साथ प्रोग्राम के रूप में एक साथ ऐसा करने का मेरा पसंदीदा तरीका UITabBarController का एक उपवर्ग बनाने के लिए है, मेरे स्टोरीबोर्ड में मेरी टैब बार नियंत्रक दृश्य से 3 UIViewController रिश्तों के साथ नया उपवर्ग (का उपयोग नीचे दिए गए मामले) में वांछित दृश्य नियंत्रक करने के लिए टैब बार नियंत्रक, और फिर ओवरराइड viewWillAppear:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    NSArray* titleKeys = [NSArray arrayWithObjects:@"top places", 
                @"localizablekey1", 
                @"localizablekey2", 
                @"localizablekey3", 
                nil]; 
    [super viewWillAppear:animated]; 
    int count = 0; for (UIViewController* viewController in self.viewControllers) 
     viewController.tabBarItem.title = NSLocalizedString([titleKeys objectAtIndex:count++], nil); 
} 
संबंधित मुद्दे