2010-12-30 17 views
6

मेरे पास बनाए गए टैब बार नियंत्रक के कस्टम उप-वर्ग के अंदर एक एनवी नियंत्रक है।कोई टैब बार बार छुपाता है जब कोई टैब बार छुपाता/दिखाता है?

जब भी प्रदर्शित नियंत्रकों में से एक टैब बार को छिपाने या दिखाने का प्रयास करता है तो मैं (कस्टम) टैब बार के भीतर से जानना चाहता हूं। (उदाहरण के लिए जब एक वीसी को दबाते हुए उसके छिपाते हैं BottomBarWhenPushed = YAC Nac नियंत्रक पर)।

संक्षेप में मैं टैब बार छिपाने/दिखाने वाली घटनाओं के बारे में अधिसूचित होना चाहता हूं लेकिन ऐप्पल के संदर्भ में कुछ भी नहीं मिला। मैंने UITabBar, UITabBarDelegate, UITabBarController, और UITabBarControllerDelegate को देखने का प्रयास किया लेकिन सभी केवल टैब बार आइटम से संबंधित कार्यक्षमता प्रदान करते हैं।

अग्रिम धन्यवाद।

उत्तर

0

उपवर्ग UINavigationController और hidesBottomBarWhenPushed पीछे सेटर को लागू (या UIViewController subclass सीधे hidesBottomBarWhenPushed विधि उपवर्ग के लिए) और (एक सीधा कॉल या एक NSNotification के माध्यम से) UITabBar करने के लिए कॉल प्रतिनिधि।

+0

मुझे यकीन नहीं है कि मुझे यह मिला है। छुपाएं BottomBarWhenPushed एक राज्य का प्रतिनिधित्व करने वाली संपत्ति है। इस संपत्ति में वास्तविक कोड नहीं है जो बार को छुपाता है (आमतौर पर संपत्ति को नियंत्रक के समक्ष सेट किया जाता है जो एनवी वीसी स्टैक पर धक्का दिया जाता है)। – nsof

9

यदि आप टैब बार नियंत्रक का उपयोग कर रहे हैं, तो UIKit स्पष्ट रूप से बताता है कि प्रत्येक बार नेविगेशन नियंत्रक उदाहरण टैब बार नियंत्रक के संदर्भ में प्रदर्शित किया जाएगा, इसकी viewControllers संपत्ति होगी। अब प्रत्येक UINavigationController इंस्टेंस में एक प्रतिनिधि है, जो navigationController:willShowViewController:animated: विधि को परिभाषित करता है जो आपको यह देखने देता है कि दृश्य नियंत्रक को उस पर धक्का दिया जाता है।

अपने टैब बार नियंत्रक को उस पर रखे गए प्रत्येक नेविगेशन नियंत्रक के प्रतिनिधि के रूप में सेट करके, आप गीलेर का विश्लेषण कर सकते हैं धक्का दिया जा रहा दृश्य नियंत्रक hidesBottomBarWhenPushed संपत्ति सेट है और यह मामला होने पर एक ईवेंट उत्पन्न करता है।

टैब बार नियंत्रक के टैब बार को छिपाने के लिए प्रयुक्त एल्गोरिदम निम्नानुसार है: जब एक दृश्य नियंत्रक को नेविगेशन नियंत्रक पर धक्का दिया जाता है जो स्वयं टैब टैब नियंत्रक में निहित होता है, यदि नेविगेशन के नेविगेशन स्टैक में कोई दृश्य नियंत्रक नियंत्रक के पास hidesBottomBarWhenPushed प्रॉपर्टी सेट है, फिर टैब बार छुपाया जाना चाहिए।

तो जब टैब नेविगेशन नियंत्रक का चयन किया जाता है तो टैब बार छुपाया जाता है और इसके स्टैक में दृश्य नियंत्रकों में से एक hidesBottomBarWhenPushed प्रॉपर्टी सेट होता है।

+0

नेविगेशन नियंत्रक के प्रतिनिधि के रूप में टैब बार नियंत्रक को कैसे सेट करें? मुझे त्रुटि मिल रही है। मैं कोशिश कर रहा हूं 'self.navigationController? .delegate = self.tabBarController' त्रुटि -' UITabBarController प्रकार के मान असाइन नहीं कर सकता? UINavigationControllerDelegate टाइप करने के लिए? ' –

+0

'self.navigationController? .delegate = self.tabBarController का उपयोग करके हल की गई त्रुटि! MyCustomTabBarViewController ' –

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