23

क्या presentModalViewController और pushViewController, जब बुला beetween अंतर है:आईओएस - pushViewController बनाम presentModalViewController अंतर

  • एनीमेशन नहीं करने के लिए सेट कर दिया जाता है (भले ही हाँ, यह सिर्फ एक एनीमेशन शैली बदला जा सकता है कि है)।
  • एक नेविगेशन नियंत्रक जब मोडल दृश्य पेश परिभाषित किया गया है, तो यह भी नौगम्य हो सकता है, एक कॉल स्टैक के साथ, ....

यह सिर्फ पहले से वापस जाने के लिए सक्षम होने के लिए है दृश्य धक्का दिया ? Woooaaaaaa .....

मुझे लगता है कि अंतर कहीं और गहरा है। नहीं ?

उत्तर

11

सबसे महत्वपूर्ण अंतर अर्थशास्त्र के बारे में है। मॉडल व्यू कंट्रोलर आमतौर पर इंगित करते हैं कि उपयोगकर्ता को कुछ जानकारी प्रदान करना है या कुछ करना है। इस कड़ी में गहराई में और अधिक यह बताते हैं: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html

यहाँ एक और है, कम सार अंतर वे के बारे में बात है:

"जब आप एक मॉडल दृश्य नियंत्रक पेश, प्रणाली है कि किया दृश्य नियंत्रक के बीच एक माता पिता के बच्चे का रिश्ता बनाता है प्रेजेंटिंग और व्यू कंट्रोलर प्रस्तुत किया गया था। विशेष रूप से, प्रस्तुत नियंत्रक ने प्रस्तुत किया है जो इसके प्रस्तुत (बच्चे) दृश्य नियंत्रक को इंगित करने के लिए अपनी modalViewController प्रॉपर्टी को अद्यतन करता है। इसी तरह, प्रस्तुत दृश्य नियंत्रक अपने माता-पिता दृश्य नियंत्रक को अद्यतन पर इंगित करने के लिए अद्यतन करता है नियंत्रक जो इसे प्रस्तुत किया। "

इसके अलावा इस सूत्र देखें: why "present modal view controller"?

15

की उपेक्षा बदलाव/एनिमेशन और कैसे चीजें (जो aleph_null के alswer का एक अच्छा चर्चा प्रदान करता है) पर्दे के पीछे संरचित कर रहे हैं, केवल उपयोगकर्ता-उन्मुख अंतर करने के लिए वापस करने की क्षमता है नेविगेशन बार का उपयोग कर स्वचालित रूप से पहले देखे गए दृश्य।

यदि आप pushViewController का उपयोग करते हैं तो आपको नेविगेशन बार में स्वचालित रूप से "बैक" बटन मिल जाएगा। यदि आप presentModalViewController का उपयोग करते हैं, तो आप नहीं करते हैं, और आमतौर पर नियंत्रक को खारिज करने के लिए अपने नियंत्रण और/या कॉलबैक को लागू करना होगा।

संकल्पनात्मक रूप से मोडल प्रेजेंटेशन शैली आम तौर पर परमाणु कार्यों के लिए उपयोग की जाती है जिसे आप दूर से नेविगेट नहीं कर सकते हैं (यानी आप या तो कार्य को पूरा करते हैं, या आप रद्द करते हैं, और जब तक आप एक या दूसरे को नहीं करते हैं तब तक आप ऐप के भीतर कुछ भी नहीं कर सकते) ।

यदि आप सोच रहे हैं क्यों पहले स्थान पर अंतर है, तो मैं नहीं कह सकता। व्यक्तिगत रूप से मुझे लगता है कि ढांचे जो एक नियंत्रक से दूसरे नियंत्रक (जैसे cocos2d, या एंड्रॉइड) में जाने के लिए एक एकीकृत एपीआई प्रदान करते हैं, बहुत अधिक समझ में आता है।

+0

यह सबसे महत्वपूर्ण अंतर है! –

0

UINavigationController का उपयोग तब किया जाता है जब आप अपने डेटा के कुछ प्रकार के पदानुक्रमिक प्रतिनिधित्व (यानी ड्रिल डाउन) चाहते हैं। वे UIViewController उप-वर्गों के ढेर का उपयोग करके काम करते हैं। हर बार जब आप "ड्रिल डाउन" करते हैं, तो आप बस स्टैक पर एक और व्यू कंट्रोलर जोड़ते हैं। फिर, "बैक" तर्क केवल एक स्टैक के दृश्य नियंत्रकों को पॉप करने का मामला है।

आप इस लिंक की जाँच कर सकते हैं: http://www.icodeblog.com/2011/10/11/back-to-basics-an-introduction-to-view-controllers/

1

अगर आप विचारों का एक पदानुक्रम प्रबंधित करें, बेहतर नेविगेशन नियंत्रक में pushViewController के लिए जाना चाहता हूँ यह, क्या मेरा अनुभव कहता है कि है।यह नेविगेशन नियंत्रक में दृश्य-नियंत्रकों के ढेर की तरह काम करता है। हालांकि, आवश्यकता केवल पैरेंट व्यू कंट्रोलर पर कुछ क्रियाओं को निष्पादित करने पर एक दृश्य दिखाने के लिए है, तो सबसे अच्छा तरीका इसे सामान्य रूप से पेश कर रहा है। यदि आपको एक जटिल पुश पॉप तर्क की आवश्यकता है तो हमेशा एक pushViewController पसंद करते हैं।

1

ऊपरी बाईं ओर स्थित छवि में viewControllers में एक देखो

  • शीर्ष 2 viewControllers (के लिए लॉग इन & पेश करें) हैं TabBarController & navigationController
  • बाकी हिस्सों से काट दिया ले लो दृश्य नियंत्रक एक नेविगेशन नियंत्रक में एम्बेडेड हैं। वे किसी भी तरह से ऐप के प्राकृतिक प्रवाह से संबंधित हैं।

अब आप अपने आप को

पूछने के लिए मैं हमेशा लॉगिन दिखाने + हर बार प्रस्तुत पेज की जरूरत है? यह पिछली बार लॉग इन होने पर भी हर बार लॉग इन करने के लिए गर्दन में दर्द होगा। ये 2 स्क्रीन वास्तव में स्क्रीन के प्राकृतिक प्रवाह फिट नहीं है। तो हम क्या करे? हम सिर्फ उन्हें जोड़ने रीति से उपयोग करते हुए presentViewController

हालांकि viewControllers से बाकी के लिए हम उन्हें 2 नेविगेशन के अंदर रखने के लिए तो हम आसानी से वापस जा सकते हैं चाहते हैं और आगे तो हम pushViewController

enter image description here

का उपयोग करें अधिक जानकारी मैं आपको यह video देखने के लिए अनुशंसा करता हूं। छवि को this शानदार उत्तर से भी चुना गया था। यह एक नजर के लायक है।

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