আইওআইএস নেস্টেড ভিউ কন্ট্রোলারগুলি ইউআইভিউউকন্ট্রোলারের দৃশ্যের ভিতরে দেখুন?


90

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

আমি মনে করি আমি আমার ইউআইভিউউকন্ট্রোলারে এই নেস্টেড ভিউ কন্ট্রোলারটিকে এমন কিছু বলে যুক্ত করব:

[self.view addSubview: nestedViewController.view];

6
এখানে প্রচুর ছবি সহ একটি সম্পূর্ণ টিউটোরিয়াল দেওয়া আছে !! stackoverflow.com/a/23403979/294884 উপভোগ করুন
ফ্যাটি

উত্তর:


148

না, এটি সাধারণত ভাল নকশা, এটি আপনার দর্শন নিয়ন্ত্রকদের সংক্ষিপ্ত রাখতে সহায়তা করে। তবে আপনার ভিউ কন্ট্রোলার কনটেনমেন্ট প্যাটার্নটি ব্যবহার করা উচিত, নিম্নলিখিত ডকুমেন্টেশনটি একবার দেখুন।

একটি ধারক দেখুন নিয়ন্ত্রণকারী কার্যকর করছে

স্টোরিবোর্ডগুলির সাথে ইন্টারফেস বিল্ডার ব্যবহার করে এটি অবিশ্বাস্যরকম সহজ, অবজেক্ট লাইব্রেরিতে কনটেইনার ভিউটি একবার দেখুন।

স্টোরিবোর্ডে এটি একটি স্বতন্ত্র উদাহরণ। এই উদাহরণে আপনার কাছে 4 টি ভিউ কন্ট্রোলার রয়েছে, 3 টি ধারক রাখে এমন একটি এবং প্রতিটি ধারকগুলির জন্য একটি। আপনি যখন সমস্ত কন্টেইনারগুলির মধ্যে বাম দিকের সর্বাধিক নিয়ন্ত্রক উপস্থাপন করেন, স্টোরিবোর্ডটি স্বয়ংক্রিয়ভাবে অন্যটি শুরু করে এবং এম্বেড করে দেয় will. আপনি childViewControllersসম্পত্তি দ্বারা এই চাইল্ড ভিউ কন্ট্রোলারগুলিতে অ্যাক্সেস করতে পারেন বা এমন একটি পদ্ধতি রয়েছে যা আপনি prepareForSegue:sender:গন্তব্য দেখার নিয়ন্ত্রকদের ওভাররাইড করে ক্যাপচার করতে পারেন is সিগু সম্পর্কে বলা হবে। যদি প্রয়োজন হয় তবে শিশু দর্শন নিয়ন্ত্রকদের কাছে সম্পত্তিগুলি প্রদান করার জন্য এটি একটি ভাল পয়েন্ট।

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


42
স্টোরিবোর্ডে আপনি কীভাবে "নরক" করেন ?! এটি একটি প্রাথমিক প্রশ্ন .. আমি উত্তরটি জানি না :) দীর্ঘশ্বাস - আমার নিজের প্রশ্নের উত্তর দেওয়া। দৃশ্যে একটি ধারক যুক্ত করুন । এটাকে আকার দাও. তারপরে স্টোরিবোর্ডের ফাঁকা ক্ষেত্রগুলিতে একটি ইউআইভিউউকন্ট্রোলার তৈরি করুন। তারপরে সেই ধারকটি থেকে (নেভিগেটর তালিকায় বা জিইউআইতে) ডান-ক্লিক করে সেই নতুন ইউআইভিউকন্ট্রোলারের কাছে টানুন। পপআপ থেকে, শুরু করতে ভিডিডিডলড-এম্বেড চয়ন করুন। ধন্যবাদ ক্রিস! :)
ফ্যাটি

লিঙ্কটি ভেঙে গেছে, যাই হোক।
বেনজাহান

4
@ জো ব্লো +1 "ভিউডিডলড-এম্বেড" পবিত্র গরু: কে অনুমান করতে পারত!
ড্রুक्स

ধন্যবাদ @ ক্রিস ওয়াগনার! এটি এমভিভিএম আর্কিটেকচার বাস্তবায়ন এবং ম্যাসিভ ভিউ কন্ট্রোলার / "এমভিসি"; এড়ানোর ধাঁধার একটি সমালোচনা টুকরো;)
রব

54

আমি এই কোডটি প্যারেন্ট ভিউ কন্ট্রোলারে রেখেছি। এটি আমার জন্য খুব ভালো কাজ করছে।

ওবজ সি

-(void)viewDidLoad{
     [super viewDidLoad];
     InnerViewController *innerViewController = [self.storyboard instantiateViewControllerWithIdentifier:INNER_VIEW_CONTROLLER];
     [self addChildViewController:innerViewController];
     [self.view addSubview:innerViewController.view];
     [innerViewController didMoveToParentViewController:self];
}

সুইফট :

 let childViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildViewController"),
 self.addChildViewController(childViewController)
 self.view.addSubview(childViewController.view)
 childViewController.didMove(toParentViewController: self)

আর একটি বিকল্প আইবি ব্যবহার এবং ধারক ভিউ রাখা হয়। ইউআইভিউকন্ট্রোলার স্বয়ংক্রিয়ভাবে প্রদর্শিত হবে (এই ক্ষেত্রে এক্সকোড 9): এখানে চিত্র বর্ণনা লিখুন


4
হ্যাঁ! +1 এই প্রোগ্রামক্রমেটিক্যালি কীভাবে করা যায় তার জন্য একটি উত্তর অন্তর্ভুক্ত করার জন্য ধন্যবাদ :)
সি তেওয়াল্ট

আমি কেবলমাত্র চাইল্ড ভিউ কন্ট্রোলার থেকে প্যারেন্ট সাবভিউয়ের তালিকায় ভিউটি টেনে এনে ফেলেছি।
ডিম্পিয়াাক্স

5

এফবির উত্তরে সুইফট বিকাশকারীদের উপর ভিত্তি করে আমার সুইফট 3 সমাধানটি এখানে দেওয়া হল

 let childViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildPageViewController"),
 self.addChildViewController(childViewController)
 self.view.addSubview(childViewController.view)
 childViewController.didMove(toParentViewController: self)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.