2012-02-22 7 views
163

क्या कोई मुझे बता सकता है कि modal और push सेग्यू के बीच सटीक अंतर क्या है?स्टोरीबोर्ड में मॉडल और पुश सेग्यू के बीच क्या अंतर है?

मुझे पता है कि जब हम push का उपयोग करते हैं तो segue एक स्टैक में जोड़ा जाता है, इसलिए जब हम push का उपयोग करते रहते हैं तो यह स्मृति पर कब्जा रखता है?

क्या कोई मुझे दिखा सकता है कि इन दोनों को कैसे लागू किया जाता है? क्लिक करें ctrl

Modal segues बस द्वारा बनाया जा सकता और गंतव्य के लिए खींच लेकिन जब मैं करना है कि push मेरी ऐप्लिकेशन क्रैश साथ।

मैं एक बटन से UINavigationController पर धक्का दे रहा हूं जिसमें UIViewController है।

उत्तर

163

पुश सेग्यू नेविगेशन स्टैक में एक और वीसी जोड़ रहा है। यह मानता है कि धक्का उत्पन्न करने वाला वीसी एक ही नेविगेशन नियंत्रक का हिस्सा है कि वीसी जो स्टैक में जोड़ा जा रहा है, से संबंधित है। मेमोरी प्रबंधन नेविगेशन नियंत्रकों और एक गहरी ढेर के साथ कोई मुद्दा नहीं है। जब तक आप ऑब्जेक्ट्स का ख्याल रखते हैं, तो आप एक वीसी से दूसरे में जा सकते हैं, रनटाइम नेविगेशन स्टैक का ख्याल रखेगा। एक दृश्य संकेत के लिए छवि देखें: NavStack

एक मोडल Segue सिर्फ एक कुलपति रीति से एक और कुलपति पेश है। वीसी को एक नेविगेशन नियंत्रक का हिस्सा नहीं होना चाहिए और वीसी को आम तौर पर प्रस्तुत किया जा रहा है जिसे आम तौर पर प्रस्तुत करने वाले (अभिभावक) वीसी का "बच्चा" माना जाता है। आम तौर पर प्रस्तुत वीसी आमतौर पर किसी भी नेविगेशन बार या टैब बार sans है। प्रस्तुत वीसी भी बनाया और प्रस्तुत मॉडेल वीसी को खारिज करने के लिए जिम्मेदार है।

उम्मीद है कि इससे मदद मिलती है।

+1

@EIJay धन्यवाद चला गया है। एक और सवाल जब मुझे मोडल का उपयोग करना है और पुश सेग्यू का उपयोग कब करना है? –

+41

आम तौर पर, जब आप सारांश दृश्य का विस्तृत दृश्य दिखाना चाहते हैं, तो एक नेविगेशन नियंत्रक और पुश सेग का उपयोग करें। यदि "पैरेंट" दृश्य वास्तव में संबंधित नहीं है, जहां तक ​​डेटा "बच्चे" दृश्य से संबंधित है, तो एक मॉडल का उपयोग करें। एक मॉडल दृश्य के लिए एक अच्छा उदाहरण एक लॉगिन दृश्य होगा। जहां तक ​​डेटा "पैरेंट" व्यू से संबंधित है, लॉग इन व्यू में वास्तव में कोई संबंध नहीं है। –

+0

क्या एक मोडल व्यू कंट्रोलर एक और मोडल व्यू कंट्रोलर कॉल कर सकता है? –

6

पुश व्यू navigationController में बनाया जाना चाहिए। अपने master view पर

क्लिक करें, फिर मेनू बार में चुनें:

EDITOR->embed in->navigationController 
1

यह कस्टम धक्का का उपयोग कर नियंत्रण धक्का है और स्टोरीबोर्ड Story Board

के लिए तरीके segue और मॉडल का उपयोग किए बिना विचारों के माध्यम से नेविगेट करने के लिए रास्ता है स्टोरीबोर्ड उन। के रूप में segue दिखाएँ

+0

स्टोरीबोर्ड का उपयोग किए बिना मोडल सेगू कैसे बनाएं? – jianpx

+0

@ जियानपीएक्स: जब आप स्टोरीबोर्ड का उपयोग करते हैं तो आप केवल सीगू कर सकते हैं। अन्यथा आप दृश्यों के बीच स्विच करने के लिए नेविगेशन नियंत्रक या PresentModalViewController का उपयोग कर सकते हैं। – Pushkraj

+0

@ पुष्करराज धन्यवाद। तो क्या आपका मतलब है कि कोड द्वारा सेगू बनाने का कोई तरीका नहीं है? – jianpx

8

स्विफ्ट 3.0 और XCode 8.2.1 अद्यतन

1. पुश Segue

पुश segue नाम दिया गया है। पुश सेगू बनाने के लिए, पैरेंट व्यू कंट्रोलर को नेविगेशन कंट्रोलर में एम्बेड करने की आवश्यकता है। नेविगेशन नियंत्रक नेविगेशन बार प्रदान करता है। एक बार जब आप पुश सेग्यू के साथ दो व्यू कंट्रोलर कनेक्ट करते हैं, तो बच्चे के दृश्य नियंत्रक के पास स्वचालित रूप से शीर्ष पर नेविगेशन बार होगा। नेविगेशन स्टैक के शीर्ष पर बाल दृश्य नियंत्रक जोड़ा जाएगा।

enter image description here

पुश segue भी डिफ़ॉल्ट सुविधाओं प्रदान करता है।बच्चे के दृश्य नियंत्रक के पास एक बैक बटन होगा जो आपको मूल दृश्य नियंत्रक पर वापस ले जाएगा। आप बच्चे दृश्य नियंत्रक को पॉप करने के लिए दाएं स्वाइप भी कर सकते हैं। पुश सेग्यू के लिए एनीमेशन क्षैतिज पृष्ठों को स्लाइड करने जैसा है।

enter image description here

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

enter image description here

2. मॉडल Segue

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

enter image description here

एनीमेशन है कि बच्चे दृश्य नियंत्रक होगा पेज के नीचे से ऊपर आता है। नेविगेशन दृश्य नियंत्रक भी महान विवरण के लिए इस डेमो में

enter image description here

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