এটি সর্বশেষতম আইওএস সংস্করণগুলির জন্য ( এক্সকোড 9.3, সুইফট 4.1 সহ সংশোধিত )। নীচে সমস্ত পর্যায় যা UIViewControllerসম্পূর্ণরূপে জীবনচক্র তৈরি করে ।
loadView()
loadViewIfNeeded()
viewDidLoad()
viewWillAppear(_ animated: Bool)
viewWillLayoutSubviews()
viewDidLayoutSubviews()
viewDidAppear(_ animated: Bool)
viewWillDisappear(_ animated: Bool)
viewDidDisappear(_ animated: Bool)
আমাকে এই সমস্ত পর্যায়টি ব্যাখ্যা করতে দিন।
1। loadView
এই ইভেন্টটি নিয়ন্ত্রণকারী পরিচালনা করে এমন দৃশ্য তৈরি করে / লোড করে। এটি কোনও সম্পর্কিত নিব ফাইল থেকে লোড করতে পারে বা UIViewনাল খুঁজে পাওয়া গেলে একটি খালি । কোডে আপনার মতামত প্রোগ্রামক্রমে তৈরি করার জন্য এটি একটি ভাল জায়গা করে তোলে।
এটি হ'ল সাব-ক্লাসগুলি তাদের কাস্টম ভিউ হায়ারার্কি তৈরি করতে হবে যদি তারা কোনও নিব ব্যবহার না করে। কখনও সরাসরি ডাকা উচিত নয়। কেবলমাত্র যখন আপনি প্রোগ্রামটিমেটিকভাবে ভিউ তৈরি করেন এবং viewসম্পত্তিতে রুট ভিউ বরাদ্দ করেন তখনই এই পদ্ধতিটি ওভাররাইড করুন যখন আপনি লোড ভিউর ওভাররাইড করবেন তখন সুপার পদ্ধতিটিকে কল করবেন না
2। loadViewIfNeeded
যদি বর্তমানের দৃশ্যটি viewControllerএখনও সেট না করা থাকে তবে এই পদ্ধতিটি ভিউটি লোড করবে তবে মনে রাখবেন, এটি কেবল আইওএস> = 9.0 এ উপলব্ধ। সুতরাং আপনি যদি আইওএস <9.0 সমর্থন করেন তবে ছবিতে আসার আশা করবেন না।
যদি ইতিমধ্যে সেট না করা থাকে তবে দৃশ্য নিয়ন্ত্রণকারীর ভিউ লোড করে।
3। viewDidLoad
viewDidLoadইভেন্টটি কেবল তখনই বলা হয় যখন দৃশ্যটি তৈরি করা হয় এবং মেমরিতে লোড করা হয় তবে দেখার জন্য সীমাটি এখনও সংজ্ঞায়িত করা হয় না। ভিউ কন্ট্রোলার ব্যবহার করতে যাওয়া অবজেক্টগুলির সূচনা করার জন্য এটি একটি ভাল জায়গা।
ভিউ লোড হওয়ার পরে ফোন করা হয়েছে। কোডে তৈরি কন্ট্রোলার দর্শনার্থীদের জন্য, এটি -উড-ভিউয়ের পরে। কোনও নিব থেকে সংরক্ষণাগারভুক্ত দর্শন নিয়ন্ত্রকদের জন্য, ভিউ সেট হওয়ার পরে এটি।
4। viewWillAppear
এই ইভেন্টটি viewControllerযখনই স্ক্রিনে ভিউ প্রদর্শিত হবে তখন অবহিত করে । এই পদক্ষেপে ভিউটির সীমানা রয়েছে যা সংজ্ঞায়িত হয় তবে অভিযোজনটি সেট করা হয় না।
কলটি যখন দৃশ্যটি দৃশ্যমান হবে। ডিফল্ট কিছুই করে না।
5। viewWillLayoutSubviews
এটি লাইফসাইকেলের প্রথম পদক্ষেপ যেখানে সীমা চূড়ান্ত করা হয়। যদি আপনি সীমাবদ্ধতা বা অটো লেআউট ব্যবহার না করেন তবে আপনি সম্ভবত এখানে সংক্ষিপ্তসারগুলি আপডেট করতে চান। এটি কেবল আইওএস> = 5.0 এ উপলব্ধ। সুতরাং আপনি যদি আইওএস <5.0 সমর্থন করেন তবে ছবিতে আসার আশা করবেন না।
ভিউ কন্ট্রোলারের ভিউ'র লেআউটসুভিউস পদ্ধতিটি চালিত হওয়ার ঠিক আগে কল করা হয়েছিল। সাবক্লাসগুলি প্রয়োজনীয় হিসাবে প্রয়োগ করতে পারে। ডিফল্ট হ'ল ন্যাপ।
6। viewDidLayoutSubviews
এই ইভেন্টটি ভিউ কন্ট্রোলারকে জানিয়ে দেয় যে সাবভিউগুলি সেটআপ হয়েছে। সেগুলি সেট আপ হওয়ার পরে সাবউভিউগুলিতে কোনও পরিবর্তন করার জন্য এটি ভাল জায়গা। এটি কেবল আইওএস> = 5.0 এ উপলব্ধ। সুতরাং আপনি যদি আইওএস <5.0 সমর্থন করেন তবে ছবিতে আসার আশা করবেন না।
দেখার জন্য নিয়ন্ত্রকের ভিউ'র লেআউটসুভিউস পদ্ধতিটি চালু হওয়ার ঠিক পরে কল করা হয়েছে। সাবক্লাসগুলি প্রয়োজনীয় হিসাবে প্রয়োগ করতে পারে। ডিফল্ট হ'ল ন্যাপ।
7। viewDidAppear
viewDidAppearদৃশ্য পর ঘটনা দাবানল পর্দায় উপস্থাপন করা হয়। যা ব্যাকএন্ড পরিষেবা বা ডাটাবেস থেকে ডেটা পাওয়ার জন্য এটি ভাল জায়গা করে তোলে।
দৃশ্যটি পুরোপুরি স্ক্রিনে স্থানান্তরিত হওয়ার পরে কল করা হয়। ডিফল্ট কিছুই করে না
8। viewWillDisappear
viewWillDisappearঘটনা দাবানল উপস্থাপন দৃশ্যে যখন viewControllerসম্পর্কে, অন্তর্হিত হওয়া বরখাস্ত, কভার বা লুকিয়ে রাখবেন অন্যান্য পিছনে হয় viewController। এটি একটি ভাল জায়গা যেখানে আপনি আপনার নেটওয়ার্ক কলগুলিকে সীমাবদ্ধ করতে পারবেন, টাইমারকে অকার্যকর করতে পারবেন বা অবধারিত অবজেক্টগুলি প্রকাশ করতে পারবেন viewController।
দৃশ্যটি বরখাস্ত, আচ্ছাদিত বা অন্যথায় লুকানো থাকলে কল করা হয়।
9। viewDidDisappear
এটি লাইফসাইকেলের শেষ পদক্ষেপ যা উপস্থাপকের দৃষ্টিভঙ্গি viewControllerঅদৃশ্য হয়ে যায়, বরখাস্ত করা হয়, আবৃত করা হয় বা লুকানো থাকে তার পরে যে কেউ এই ইভেন্টটিকে আগুন হিসাবে চিহ্নিত করতে পারে ।
দৃশ্যটি বরখাস্ত হওয়ার পরে, আচ্ছাদিত বা অন্যথায় লুকানো থাকার পরে কল করা হয়। ডিফল্ট কিছুই করে না
এখন অনুযায়ী অ্যাপল যখন আপনি এই পদ্ধতি আপনাকে কল করার মনে রাখা উচিত বাস্তবায়ন করছি superনির্দিষ্ট পদ্ধতি বাস্তবায়ন।
আপনি যদি ইউআইভিউউকন্ট্রোলার সাবক্লাস করেন তবে আপনাকে অবশ্যই এনআইবি ব্যবহার না করা সত্ত্বেও আপনাকে অবশ্যই এই পদ্ধতির সুপার প্রয়োগ করতে হবে। (সুবিধার্থে, ডিফল্ট সূচনা পদ্ধতিটি আপনার জন্য এটি করবে এবং এই দুটি পদ্ধতির আর্গুমেন্টের জন্য শূন্যতা নির্দিষ্ট করে) মূল দৃশ্যে সংযুক্ত যদি আপনি এই পদ্ধতিটি কোনও নিল নিব নামে প্রার্থনা করেন তবে এই শ্রেণীর -loadViewপদ্ধতিটি এমন কোনও এনআইবি লোড করার চেষ্টা করবে যার নামটি আপনার দর্শন নিয়ন্ত্রকের শ্রেণীর মতো। প্রকৃতপক্ষে এ জাতীয় কোনও এনআইবি যদি বিদ্যমান না থাকে তবে আপনাকে অবশ্যই ডাকার -setView:আগে কল করতে হবে -view, অথবা -loadViewআপনার মতামতগুলি অগ্রগতিতে সেট আপ করার জন্য পদ্ধতিটি ওভাররাইড করতে হবে।
আশা করি এটি সাহায্য করেছে। ধন্যবাদ।
আপডেট - @ থমাসডাব্লু মন্তব্যের অভ্যন্তরে ইঙ্গিত করে viewWillLayoutSubviewsএবং viewDidLayoutSubviewsঅন্যান্য সময়ে যখন প্রধান ভিউর সংক্ষিপ্তসারগুলি লোড করা হয় তখনও ডাকা হবে, উদাহরণস্বরূপ যখন কোনও সারণী দর্শন বা সংগ্রহ দর্শনের ঘরগুলি লোড হয়।
আপডেট - @ মারিয়া মন্তব্যের ভিতরে উল্লেখ করার সাথে সাথে বর্ণনাটি loadViewআপডেট করা হয়েছিল