একটি স্টোরিবোর্ড "ধারক দেখুন" কেবল একটি স্ট্যান্ডার্ড UIView
অবজেক্ট। কোনও বিশেষ "ধারক দর্শন" প্রকার নেই। প্রকৃতপক্ষে, আপনি যদি ভিউয়ের স্তরক্রমের দিকে নজর দেন, আপনি দেখতে পাবেন যে "ধারক দর্শন" একটি মান UIView
:
এই প্রোগ্রামটিমেটিকালিটি অর্জনের জন্য, আপনি "নিয়ন্ত্রক সংযুক্তি দেখুন" নিয়োগ করেন:
instantiateViewController(withIdentifier:)
স্টোরিবোর্ড অবজেক্টে কল করে চাইল্ড ভিউ কন্ট্রোলার ইনস্ট্যান্ট করুন ।
addChild
আপনার প্যারেন্ট ভিউ কন্ট্রোলারে কল করুন ।
view
আপনার ভিউ হায়ারার্কিতে ভিউ কন্ট্রোলার যুক্ত করুন addSubview
(এবং frame
উপযুক্ত হিসাবে বা সীমাবদ্ধগুলিও সেট করুন ) set
didMove(toParent:)
অভিভাবক দর্শন নিয়ন্ত্রকের রেফারেন্সটি পাস করে চাইল্ড ভিউ কন্ট্রোলারে পদ্ধতিটি কল করুন ।
দেখুন একটি ধারক দেখুন কন্ট্রোলার বাস্তবায়নকারী মধ্যে দেখুন কন্ট্রোলার গাইড প্রোগ্রামিং এবং অধ্যায় "একটি কনটেইনার দেখুন কন্ট্রোলার বাস্তবায়নকারী" UIViewController ক্লাস রেফারেন্স ।
উদাহরণস্বরূপ, সুইফ্ট ৪.২ এ এটি দেখতে দেখতে লাগবে:
override func viewDidLoad() {
super.viewDidLoad()
let controller = storyboard!.instantiateViewController(withIdentifier: "Second")
addChild(controller)
controller.view.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(controller.view)
NSLayoutConstraint.activate([
controller.view.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10),
controller.view.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10),
controller.view.topAnchor.constraint(equalTo: view.topAnchor, constant: 10),
controller.view.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10)
])
controller.didMove(toParent: self)
}
দ্রষ্টব্য, উপরে বর্ণমুখে আসলে একটি "ধারক ভিউ" যুক্ত করে না। আপনি যদি এটি করতে চান তবে আপনি এমন কিছু করতে চাই:
override func viewDidLoad() {
super.viewDidLoad()
// add container
let containerView = UIView()
containerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(containerView)
NSLayoutConstraint.activate([
containerView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10),
containerView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -10),
containerView.topAnchor.constraint(equalTo: view.topAnchor, constant: 10),
containerView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -10),
])
// add child view controller view to container
let controller = storyboard!.instantiateViewController(withIdentifier: "Second")
addChild(controller)
controller.view.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(controller.view)
NSLayoutConstraint.activate([
controller.view.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
controller.view.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
controller.view.topAnchor.constraint(equalTo: containerView.topAnchor),
controller.view.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
])
controller.didMove(toParent: self)
}
এই উত্তরোত্তর প্যাটার্নটি চূড়ান্তভাবে কার্যকর যদি কখনও কখনও পৃথক শিশু দেখার নিয়ন্ত্রকদের মধ্যে রূপান্তর হয় এবং আপনি কেবল নিশ্চিত করতে চান যে কোনও সন্তানের দৃষ্টিভঙ্গি একই স্থানে রয়েছে এবং পূর্ববর্তী সন্তানের দৃশ্যে (যেমন প্লেসমেন্টের জন্য সমস্ত অনন্য বাধাগুলি ধারক দৃশ্যের দ্বারা নির্ধারিত হয়, বরং প্রতিবার এই প্রতিবন্ধকতাগুলি পুনর্নির্মাণ করার চেয়ে)। তবে যদি কেবল সাধারণ দৃষ্টিকোণ পরিবেশন করা হয় তবে এই পৃথক ধারক দর্শনটির প্রয়োজন কম বাধ্যকারী।
উপরের উদাহরণগুলিতে আমি নিজের প্রতিবন্ধকতাগুলি সংজ্ঞায়িত translatesAutosizingMaskIntoConstraints
করতে চলেছি false
। আপনি যদি চান তবে আপনি অবশ্যই translatesAutosizingMaskIntoConstraints
হিসাবে ছেড়ে যেতে পারেন এবং আপনার যুক্ত দর্শনগুলির জন্য এবং true
উভয়ই সেট করতে পারেন।frame
autosizingMask
এই উত্তরটির পূর্ববর্তী সংশোধনগুলি সুইফট 3 এবং সুইফট 2 উপস্থাপনের জন্য দেখুন।