मैं आगे जाना है और इससे सहमत नहीं करने जा रहा हूँ के साथ @ St3fan, और जवाबी उदाहरण के रूप में UIKit
का उपयोग करें।
हालांकि, सामान्य रूप से एम्बेडिंग नियंत्रकों के ज्ञान (या इसकी कमी) को सीआईआई यूआई डिज़ाइन सिद्धांतों द्वारा निर्देशित किया जाना चाहिए।
सबसे आसान जवाबी उदाहरण UINavigationControllers
UITabBarControllers
में एम्बेडेड है। ये सब जगह पर दिखाई देते हैं। मेरे सिर के शीर्ष पर, आईफोन पर आईपॉड ऐप, और आईफोन पर फोन ऐप के अंदर संपर्क।
मैं यह देखने के लिए परेशान था कि वे "सुपर-कंट्रोलर" दृश्य में जोड़ें या UIWindow
पर जोड़ें। मुझे पूरा यकीन था कि उप-नियंत्रक विचार वंशज थे दृश्य पदानुक्रम में सुपर-कंट्रोलर विचारों के विपरीत, जो St3fan की सिफारिश के विपरीत है।
मैंने इंटरफ़ेसबिल्डर में सबकुछ एक बहुत तेज़ आईफोन ऐप को हुकिंग करने के लिए UITabBarController
आधारित ऐप दो टैब के साथ बनाया, जिसमें से पहला था UINavigationController
सादा ओले UIViewController
के साथ यह रूट व्यू कंट्रोलर है, और एक सादा पुराना UIViewController
वाला दूसरा टैब बस इतना है कि मेरे पास बाद में क्लिक करने के लिए दूसरा टैब था।
नियंत्रकों हम यह देखने के लिए उत्पादन विभिन्न
UIView's
करने के लिए कुछ
NSLog
बयान में
छिड़ककर:
tabBarController.view = <UILayoutContainerView: 0x5b0dc80; ...
navigationController.view = <UILayoutContainerView: 0x59469a0; ...
rootViewController.view = <UIView: 0x594bb70; ...
Superview: <UIViewControllerWrapperView: 0x594cc90; ...
Superview: <UINavigationTransitionView: 0x594a420; ...
Superview: <UILayoutContainerView: 0x59469a0; ... // navigationController.view
Superview: <UIViewControllerWrapperView: 0x594b430; ...
Superview: <UITransitionView: 0x5b0e110; ...
Superview: <UILayoutContainerView: 0x5b0dc80; ... // tabBarController.view
Superview: <UIWindow: 0x5942a30; ...
लाइनों "Superview" उपसर्ग के साथ शून्य से टकराने जब तक rootViewController.view's
superview श्रृंखला चलने से उत्पादन कर रहे थे।
फिर निश्चित रूप से दो स्थानों में कॉल स्टैक पर एक त्वरित नज़र जहां viewDidDisappear
रूट व्यू कंट्रोलर पर कॉल किया जाएगा।
पहले, कॉल स्टैक जब viewDidDisappear
एक नया नियंत्रक का एक परिणाम के रूप में जड़ नियंत्रक पर कहा जाता है ढेर करने पर धक्का दे दिया जा रहा है:
-[RootController viewDidDisappear:]
-[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:]
...
दूसरा, कॉल स्टैक जब किसी अन्य टैब में चयन किया जाता है सर्वोच्च UITabBarController:
-[RootController viewDidDisappear:]
-[UINavigationController viewDidDisappear:]
-[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:]
सभी मामलों में
तो, ऐसा लगता है एप्पल फैसला किया है कि कि नियंत्रक विभिन्न viewDidAppear
बुला किया जाना चाहिए, उनके एम्बेडेड subcontrollers पर और कहा कि आदि तरीकों को देखने के समान एम्बेड किए जाने चाहिए ly। मुझे लगता है कि अगर हम UIKit
डिजाइन को पालन करने के लिए एक अच्छे नेतृत्व के रूप में लेते हैं तो ओपी ने इस नाखून को सीधे सिर पर मारा।
सिर्फ इसलिए कि मैं उत्सुक हूं ...: आप एक टैब बार नियंत्रक को किसी अन्य व्यू कंट्रोलर में क्यों लपेटेंगे? :) ज्यादातर मामलों में, वे दृश्य (नियंत्रक) पदानुक्रम की जड़ हैं ... – Toastor
+1 .. वास्तव में मेरी समस्या हल हो गई .. चीयर्स –