স্টোরিবোর্ডগুলিতে মোডাল এবং পুশ সেগনের মধ্যে পার্থক্য কী?


178

কেউ আমাকে ব্যাখ্যা করতে পারেন যে modalএবং pushসেগের মধ্যে সঠিক পার্থক্য কী?

আমি জানি যে যখন আমরা pushসিগুটি ব্যবহার করি তখন একটি স্ট্যাকের সাথে যুক্ত হয়, তাই আমরা যখন pushএটি ব্যবহার করি মেমরি ধরে রাখি?

কেউ দয়া করে আমাকে দেখাতে পারেন যে এই দুটি বাস্তবায়ন হয় কীভাবে?

Modalসেগগুলি সহজভাবে ctrl-clickএবং গন্তব্যে টেনে নিয়ে তৈরি করা যেতে পারে তবে যখন আমি এটি pushকরি আমার অ্যাপ ক্র্যাশ হয়।

আমি একটি বোতাম থেকে এমন একটিতে চাপছি UINavigationControllerযা একটি UIViewController

উত্তর:


174

একটি পুশ সেগু নেভিগেশন স্ট্যাকের জন্য আরও একটি উপাচার্য যুক্ত করছে। এটি ধরে নেওয়া হয় যে ভিসি যা পুশকে উত্পন্ন করে একই স্ট্যান্ডে যোগ করা ভিসিটি একই ন্যাভিগেশন কন্ট্রোলারের অংশ। নেভিগেশন কন্ট্রোলার এবং গভীর স্ট্যাকের সাথে মেমরি পরিচালনা কোনও সমস্যা নয়। যতক্ষণ আপনি কোনও বিষয় উপাচার্য থেকে অন্য ভিসিতে যাচ্ছেন আপনি সেগুলির যত্ন নিচ্ছেন, রানটাইম নেভিগেশন স্ট্যাকের যত্ন নেবে। ভিজ্যুয়াল ইঙ্গিতের জন্য চিত্রটি দেখুন: NavStack

একটি মডেল সেগু হ'ল একটি ভিসি অন্য উপাচার্যকে মোডালি উপস্থাপন করে। ভিসিগুলিকে কোনও নেভিগেশন কন্ট্রোলারের অংশ হতে হবে না এবং উপাচার্যগুলিকে আধুনিকভাবে উপস্থাপিত করা সাধারণত উপস্থাপক (পিতা বা মাতা) ভিসির "শিশু" হিসাবে বিবেচিত হয়। সাধারণত উপস্থাপিত উপাচার্য সাধারণত যে কোনও নেভিগেশন বার বা ট্যাব বার সান করে। উপস্থাপক উপাচার্য এটির তৈরি এবং উপস্থাপিত মডেল ভিসি খারিজ করার জন্যও দায়ী।

আশাকরি এটা সাহায্য করবে.


1
@ আইজয় দুর্দান্ত ব্যাখ্যার জন্য ধন্যবাদ। আরও একটি প্রশ্ন আমাকে কখন মডেল ব্যবহার করতে হবে এবং কখন পুশ সেগুটি ব্যবহার করতে হবে?
গৌরব_সনি

43
সাধারণত, আপনি যখন সংক্ষিপ্তসারটির বিশদ দর্শন প্রদর্শন করতে চান, তখন একটি নেভিগেশন নিয়ন্ত্রক এবং পুশ সেগগুলি ব্যবহার করুন। "সন্তানের" দৃশ্যের সাথে ডেটা সম্পর্কিত যতটা "প্যারেন্ট" দৃষ্টিভঙ্গি যদি সত্যিই সম্পর্কিত না হয় তবে একটি মডেল ব্যবহার করুন। মডেল ভিউয়ের জন্য একটি ভাল উদাহরণ হ'ল লগইন ভিউ। "অভিভাবক" দর্শনের সাথে ডেটা সম্পর্কিত যতক্ষণ না লগইন ভিউয়ের সত্যই কোনও সম্পর্ক নেই।
এলজে উইলসন

5
@ টিজে হ্যাঁ, আপনি "মডেল চেইন" তৈরি করতে পারেন। কোনও ভিসিকে শৃঙ্খলা থেকে নামানোর পরে সমস্ত ভিসি চেইন আপকে বাতিল করে দেয় - ব্যবহারকারী কেবলমাত্র শীর্ষ ভিসি বরখাস্ত (যখন আপনি অ্যানিমেশন সক্ষম করবেন) দেখেন। এটি নেভিগেশন নিয়ন্ত্রকদের মতো।
কনস্টান্টিনো জারোহাস

3
@jchatard হ্যাঁ যতক্ষণ না আপনার সেগু মডেল, স্টোরিবোর্ডে আপনি দেখতে পাবেন যে নেভিগেশন বারটি উত্তরাধিকার সূত্রে প্রাপ্ত নয়। সুতরাং আপনার কাছে থাকা মোডাল চেইনের প্রথম ভিসিতে কেবল ক্লিক করুন এবং তারপরে মেনু সম্পাদক -> এম্বেড ইন -> নেভিগেশন কন্ট্রোলারে ক্লিক করুন। এটি আপনাকে একটি নেভিগেশন নিয়ন্ত্রণকারী সেট করবে যা আপনার সমস্ত মডেল চেইনের পক্ষে সাধারণ হবে। এই মুহুর্তে কেবল নেভিগেশন কন্ট্রোলার প্রদর্শন করার জন্য সেগুটি "মডেল" নয়, যেখানে আপনার মডেল চেইনের অভ্যন্তরের সমস্ত সেগগুলি অবশ্যই "পুশ" সেগগুলি হওয়া উচিত।
এইচপিটাইম

3
আপনি যে ভিসি থেকে সিক্রেট করছেন তা কোনও নেভিগেশন কন্ট্রোলার ব্যবহার করে তবেই পুশ ব্যবহার করা যেতে পারে। কোনও নেভিগেশন নিয়ামককে এম্বেড করা হয়নি এমন কোনও উপাচার্য থেকে চাপ দেওয়ার চেষ্টা করুন এবং এটি একটি ব্যতিক্রম ছুঁড়ে ফেলবে। সুতরাং, পিতামাতা এবং সন্তানের মধ্যে ডেটাটি কতটা দৃly়ভাবে সংযুক্ত রয়েছে তার সাথে এর আসলে কিছুই করার নেই, আপনি আপনার উপাচার্য পরিচালনা করতে কোনও নেভিগেশন কন্ট্রোলার ব্যবহার করছেন কিনা তা সহজভাবে করতে হবে। আপনি মোডাল ট্রানজিশনগুলি ব্যবহার করে সেগগুলি ম্যানুয়ালি ঠিক একই জিনিস করতে পারেন।
হাসিবোট

21

সুইফট 3.0 এবং এক্সকোড 8.2.1 আপডেট

1. সিগস পুশ করুন

পুশ সিগু-র নাম পরিবর্তন করা হয়েছে শো সেগেই। পুশ সেগু তৈরি করতে, পিতামাতার ভিউ কন্ট্রোলারটিকে নেভিগেশন কন্ট্রোলারে এম্বেড করা দরকার। নেভিগেশন নিয়ামক নেভিগেশন বার সরবরাহ করে। একবার আপনি পুশ সেগু দিয়ে দু'টি ভিউ কন্ট্রোলারের সাথে সংযোগ স্থাপন করলে, চাইল্ড ভিউ কন্ট্রোলারের স্বয়ংক্রিয়ভাবে উপরে নেভিগেশন বার থাকবে। চাইল্ড ভিউ কন্ট্রোলারটি নেভিগেশন স্ট্যাকের উপরে যুক্ত করা হবে।

এখানে চিত্র বর্ণনা লিখুন

পুশ সেগু ডিফল্ট বৈশিষ্ট্যও সরবরাহ করে। চাইল্ড ভিউ কন্ট্রোলারের একটি ব্যাক বোতাম থাকবে যা আপনাকে প্যারেন্ট ভিউ কন্ট্রোলারে ফিরিয়ে আনবে। চাইল্ড ভিউ কন্ট্রোলারটি পপ করতে আপনি ডানদিকে সোয়াইপ করতে পারেন। পুশ সেগুয়ের জন্য অ্যানিমেশনটি পৃষ্ঠাগুলি অনুভূমিকভাবে স্লাইড করার মতো।

এখানে চিত্র বর্ণনা লিখুন

যখন আপনাকে কোনও ন্যাভিগেশন নিয়ন্ত্রকের মধ্যে নেই এমন একটি ভিউ কন্ট্রোলার থেকে একটি পুশ সেগু করার অনুমতি দেওয়া হয়েছে, আপনি যখন যা করবেন তখন নেভিগেশন বার, অ্যানিমেশন, অঙ্গভঙ্গি ইত্যাদি সমস্ত বৈশিষ্ট্য হারাবেন। এক্ষেত্রে আপনার প্রথমে নেভিগেশন ভিউ কন্ট্রোলারের অভ্যন্তরে আপনার পিতামাতার ভিউ কন্ট্রোলারটিকে এম্বেড করা উচিত এবং তারপরে চাইল্ড ভিউ কন্ট্রোলারগুলিতে পুশ সেগু করা উচিত।

এখানে চিত্র বর্ণনা লিখুন

2. মডেল সেগু

অন্যদিকে, একটি মডেল সেগু (বর্তমান উপস্থিত মডেল) বর্তমান ভিউ কন্ট্রোলারের উপর উপস্থাপন করছে। চাইল্ড ভিউ কন্ট্রোলার নেভিগেশন ভিউ কন্ট্রোলারের উত্তরাধিকারী হবে না তাই আপনি নেভিগেশন ভিউ কন্ট্রোলারের সাথে কোনও ভিউ কন্ট্রোলারের কাছ থেকে মডেল সেগুন উপস্থাপন করলে নেভিগেশন বারটি নষ্ট হয়ে যাবে। আপনাকে চাইল্ড ভিউ কন্ট্রোলারটিকে আবার নেভিগেশন কন্ট্রোলারে এম্বেড করতে হবে এবং যদি আপনি এটি চান তবে একটি নতুন নেভিগেশন স্ট্যাক শুরু করতে হবে। আপনি যদি প্যারেন্ট ভিউ কন্ট্রোলারে ফিরে যেতে চান তবে আপনাকে নিজের দ্বারা এটি প্রয়োগ করতে হবে এবং dismissকোড থেকে কল করতে হবে ।

এখানে চিত্র বর্ণনা লিখুন

মডেল সিগুটির জন্য অ্যানিমেশনটি হ'ল চাইল্ড ভিউ কন্ট্রোলারটি পৃষ্ঠার নীচ থেকে উঠে আসবে। নেভিগেশন ভিউ নিয়ন্ত্রণকারীও এই ডেমোতে চলে গেছে

এখানে চিত্র বর্ণনা লিখুন


6

পুশ ভিউটি অবশ্যই একটিতে তৈরি করা উচিত navigationController

আপনার ক্লিক করুন master view, তারপরে মেনু বারে চয়ন করুন:

EDITOR->embed in->navigationController

ভুল, pushViewছাড়াও নির্মিত যেতে পারে navigationControllerএবং এই উত্তরটি অসম্পূর্ণ!
দক্ষিণ গার্গাস

1

এটি স্টোরিবোর্ডের জন্য কাস্টম পুশ এবং সেগু পদ্ধতি ব্যবহার করে নিয়ন্ত্রণগুলিকে চাপ দিচ্ছে গল্প বোর্ড

মডেল হ'ল স্টোরিবোর্ডগুলি ব্যবহার না করেই ভিউগুলির মাধ্যমে নেভিগেট করার উপায়।


স্টোরিবোর্ড ব্যবহার না করে কীভাবে মডেল সেগু তৈরি করবেন?
jianpx

@ জিয়ানপেক্স: আপনি যখন স্টোরিবোর্ডগুলি ব্যবহার করেন কেবল তখনই আপনি সেগমেন্ট করতে পারেন। অন্যথায় আপনি দর্শনগুলির মধ্যে স্যুইচ করার জন্য নেভিগেশন নিয়ন্ত্রণকারী বা প্রেজেন্টমডালভিউ কনট্রোলার ব্যবহার করতে পারেন।
পুষ্করাজ

@ পুষ্করাজ ধন্যবাদ সুতরাং আপনি কি বোঝাতে চাইছেন কোড দ্বারা সেগ তৈরি করার কোনও উপায় নেই?
jianpx

@ জিয়ানপেক্স: দরকার নেই। স্টোরিবোর্ডগুলি ব্যবহার করার সময় কেবল সেগ প্রয়োজন।
পুষ্করাজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.