5

मैं आईओएस के लिए उद्देश्य-सी में एक प्रोजेक्ट विकसित कर रहा हूं, और मेरे पास UITabBarController के उप-वर्ग का उपयोग करके एकाधिक टैब के साथ एक दृश्य है। प्रत्येक टैब में इसका अपना यूनाविगेशन नियंत्रक होता है। जब कोई टैब किसी टैब पर लोड होता है, तो उपयुक्त सक्रियण ईवेंट आग (ViewWillAppear, viewDidLoad, आदि)। हालांकि, एक बार जब आप एक अलग टैब पर टैप करते हैं, और वापस टैप करते हैं, तो इन सभी घटनाओं को फिर से आग नहीं दी जाएगी क्योंकि दृश्य पहले से ही उस विशिष्ट टैब के लिए दृश्य दृश्य है (उदाहरण के लिए देखेंडिडलोड)।दृश्य दृश्य में परिवर्तन के लिए एनएसएनोटिफिकेशन या प्रतिनिधि पंजीकरण

मेरा प्रश्न यह है: क्या कोई अधिसूचना या प्रतिनिधि है जो मैं बस पंजीकरण कर सकता हूं और अधिसूचित हो सकता हूं जब विंडो में दृश्यमान दृश्य बदलता है? मैंने कुछ शोध किया है और मुझे इसके लिए कुछ भी विशिष्ट नहीं मिला। मैं क्या कर रहा पर योजना है:

  1. दिखाई दृश्य की जाँच करें जब टैब बार सूचकांक परिवर्तन: TabBarController: didSelectViewController
  2. रजिस्टर प्रत्येक नेविगेशन नियंत्रक पर इस घटना के लिए: navigationController: didShowViewController: एनिमेटेड:

ऐसा करने से, जब भी दृश्यव्यू कंट्रोलर टैब को बदलकर बदलता है, या टैब के नेविगेशन प्रवाह के भीतर नेविगेट करता है (मॉडल्स को छोड़कर, मुझे इस पर कोई ख्याल नहीं है, मुझे उनकी परवाह नहीं है। उन्हें पहले से ही संभाला जाता है)।

क्या यह सही दृष्टिकोण है?

उत्तर

1

क्या आपने UITabBarControllerDelegate को देखा है? इस विधि लगता है आप के लिए क्या देख रहे:

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

प्रलेखन से:

In iOS v3.0 and later, the tab bar controller calls this method regardless 
of whether the selected view controller changed. In addition, it is called only 
in response to user taps in the tab bar and is not called when your code 
changes the tab bar contents programmatically. 

यहाँ लिंक है: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html

आशा है कि मदद करता है!

0

पहले UITabBarController प्रतिनिधि विधि "टैबबार नियंत्रक: didSelectViewController" को लागू करें और ऐप प्रतिनिधि में इसके लिए पंजीकरण करें। आप प्रत्येक नेविगेशन नियंत्रक में इसके लिए पंजीकरण नहीं कर सकते हैं। केवल एक वस्तु प्रतिनिधि हो सकती है। उस विधि में, इसे UINavigationController पर टाइप करें।

फिर उस UINavigationController पर "topViewController" को कॉल करके UIViewController प्राप्त करें। फिर viewWillAppear को कॉल करें: विधि सीधे उस पर।

+0

धन्यवाद। मैं इसे जल्द ही एक शॉट दूंगा - मुझे दरवाजे से बाहर निकलने के लिए कुछ और दोष मिले हैं। :) –

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