8

जैसे ही उपयोगकर्ता दूसरे टैब पर क्लिक करता है, मैं बैज को हटाना चाहता हूं। मैं ऐसा करने की कोशिश कर रहा हूं:उपयोगकर्ता किसी अन्य टैब पर क्लिक करने के बाद UITabBar बैज को कैसे हटा सकता है?

- (void)viewDidDisappear:(BOOL)animated { 
    [super viewDidDisappear:animated]; 

    UITabBarItem *tbi = (UITabBarItem *)self.tabController.selectedViewController.tabBarItem; 
    tbi.badgeValue = nil; 
} 

लेकिन यह काम नहीं करता है।

+0

संभव http://stackoverflow.com/questions/2476903/remove-bagde-from-tabbar-item – jer

उत्तर

10

आप वर्तमान टैब से बैज को हटाना चाहते हैं, या एक स्पर्श किया है?

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController; 

नोट इस समारोह कहा जाता हो जाता है कि जब भी उपयोगकर्ता एक टैब बार बटन पर टैप करता, चाहे:

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

- (void)tabBarController:(UITabBarController *)tabBarController 
     didSelectViewController:(UIViewController *)viewController { 
    if(viewController != self.currentTabVC) { 
     // if you want to remove the badge from the current tab 
     self.currentTabVC.tabBarItem.badgeValue = nil; 

     // or from the new tab 
     viewController.tabBarItem.badgeValue = nil; 

     // update our tab-tracking 
     self.currentTabVC = viewController; 
    } 
} 
+0

नकल Btw, मैं यकीन नहीं कर रहा हूँ अगर बेतकल्लुफ़ -tabBarController: didSelectViewController: टैब बार बनने पर कॉल किया जाता है, या यदि आपको मैन्युअल रूप से self.currentTabVC को -plplicationDidFinishLoading में सेट करने की आवश्यकता होगी। –

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