স্টোরিবোর্ড সহ কাস্টম দর্শন


96

জটিল স্ক্রিনে (দেখুন কন্ট্রোলারগুলি) আমি পুরো জিনিসটি ছোট ছোট টুকরো টুকরো করে আলাদা করতাম (আমি তাদের উইজেটগুলি বলি)। এই উইজেটগুলি মূলত একটি MyWidget.hএবং একটি MyWidget.mফাইল এবং একটি ফাইলের সমন্বয়ে MyWidget.xibথাকে, যেখানে মূল উপাদানটি একটি UIViewএবং মাই উইজেট শ্রেণিটি ইউআইভিউর ফাইলের মালিক। এই উইজেটের সূচনায় আমি একটি করি loadNibNamed

আমার ভিউ কন্ট্রোলারে আমি তারপরে একটি [[MyWidget alloc] init]করি যা আমি দৃশ্যের নিয়ন্ত্রণের প্রধান দৃশ্যে একটি সাব ভিউ হিসাবে যুক্ত করব। এটি, এখনও অবধি পুরোপুরি কাজ করে।

আমি এখন ভাবছি, স্টোরিবোর্ড দিয়ে কীভাবে এটি করব, কারণ আমি সত্যিই UIViewঅন্য কোথাও টানা শুরু করতে পারি না , আমাকে সর্বদা একটি দিয়ে শুরু করতে হবে UIViewController, যা আমি চাই না।

স্টোরিবোর্ড দিয়ে যদি এটি করার কোনও সম্ভাব্য উপায় না থাকে, তবে আমি কি আমার মূল পর্দা এবং সেগুজের জন্য স্টোরিবোর্ডটি ব্যবহার করে এবং কাস্টম ভিউগুলি সংজ্ঞায়িত করার জন্য একটি পৃথক .xib ফাইল ব্যবহার করতে পারি?


আপনি কি xibস্টোর-বোর্ডে নয় বরং আলাদাভাবে আপনার ভিউ কন্ট্রোলারদের জন্য এস তৈরি করতে চান ?
টিপাইক্যালফ্লো

আপনি এই একটি সমাধান খুঁজে পেয়েছেন?
অ্যারেক্সট

@ আর্যেক্সট: আমি স্টোরিবোর্ড এবং xib এর মিশ্রণটি ব্যবহার করছি। মূল পর্দার স্টোরিবোর্ড এবং জটিল ভিউ বা উইজেটগুলির মূল হিসাবে কেবলমাত্র একটি ইউআইভিউ সহ এক্সিবের। সুতরাং সত্যই আমার মূল প্রশ্নের উত্তর নেই (স্টোরিবোর্ড ব্যবহার করে), তবে মূলত আমি আগে যা করেছি তা একইভাবে করা।
znq

এই দিন, শুধু একটি ধারক দৃশ্য ব্যবহার , এটা সত্যিই যে সহজ .. এর stackoverflow.com/questions/23399061/...
Fattie

উত্তর:


189

একটি পৃথক .xib ফাইলটিতে উইজেট / দর্শন স্থাপন করা কাজ করে এবং উপযুক্ত যদি আপনি একাধিক ভিউ কন্ট্রোলার থেকে একই দৃষ্টিভঙ্গিটি উল্লেখ করতে চান তবে এটি উপযুক্ত।

তবে, কখনও কখনও আপনি একই স্টোরিবোর্ডের মধ্যে অতিরিক্ত ভিউ / উইজেট দেখতে চান এবং এটি সম্ভব। আপনি এটি কীভাবে করেন তা এখানে:

  1. আইবিতে আপনার ভিউ কন্ট্রোলারটি নির্বাচন করুন (দেখার নীচের কালো বারে ক্লিক করুন), তারপরে অবজেক্ট লাইব্রেরি থেকে একটি ইউআইভিউকে কালো বারে টানুন:

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

  2. যখন কোনও দৃশ্য কালো বারে থাকে, তখন এটি আইবি-র মতো অন্য দৃশ্যের মতো তাত্ক্ষণিকভাবে কার্যকর হয় তবে আপনি কোডে এটি না করা পর্যন্ত কেবল আপনার দর্শনক্রমক্রমের সাথে যুক্ত হয় না। প্রয়োজনবোধে নিজের সাবক্লাসের সাথে মেলে দেখার জন্য শ্রেণীর পরিবর্তন করুন:

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

  3. আপনি এটিকে আপনার দৃশ্যের নিয়ামকের কাছে রেখে দিতে পারেন যেমন আপনি অন্য কোনও ভিউ হুক করেন: এখানে চিত্র বর্ণনা লিখুন

  4. যুক্ত দর্শনটি আপনার দস্তাবেজের আউটলাইনে প্রদর্শিত হবে এবং আপনি সেখানে ক্রিয়া এবং রেফারেন্সগুলিও খুঁজে পেতে পারেন:

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


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

প্রথম কাজটি হ'ল ব্ল্যাক বার থেকে ভিউটিকে আপনার ভিউ কন্ট্রোলারের দৃশ্যে ফিরিয়ে আনুন, এডিট করুন, তারপরে এটি শেষ হয়ে গেলে এটি আবার কালো বারে টেনে আনুন। এটি ঝামেলা হলেও নির্ভরযোগ্য।

অন্যান্য কাজটি আরও চতুর, তবে আমি এটি পছন্দ করি কারণ এটি আমাকে একই সাথে আমার সমস্ত দর্শন দেখতে দেয়:

  1. আপনার নতুন যুক্ত হওয়া ভিউজে অবজেক্ট লাইব্রেরি থেকে একটি ইউআইটিএলভিউ টেনে আনুন।

  2. তারপরে একটি ইউআইটিএবলভিউসেলকে সেই ইউআইটিএবলভিউতে টেনে আনুন।

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

  3. একবার আপনি এটি করার পরে, আপনার দৃশ্যটি পাশ্ববর্তীভাবে যাদুতে পপআপ হয়ে যায়, তবে আপনার একটি ইউআইটিবেল ভিউ রয়েছে যা আপনি চান না। আপনি এটি 0x0 এ আকার পরিবর্তন করতে পারেন, বা আপনি এটি মুছতে পারেন এবং আপনার ইউআইভিউ (সাধারণত) এখনও দৃশ্যমান থাকবে।

  4. মাঝেমধ্যে গৌণ ভিউ আবার আইবিতে লুকানো হয়ে যায়। আপনি যদি ইউআইটিএবলভিটি মুছে ফেলে থাকেন তবে উপরের পদক্ষেপগুলি পুনরাবৃত্তি করতে পারেন, বা যদি ইউআইটিএবলভিউ এখনও বংশানুক্রমে থাকে তবে আপনাকে কেবল ইউআইটিএবলভিউলে ক্লিক করতে হবে এবং দৃশ্যটি আবার প্রদর্শিত হবে।

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

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


মার্চ ২০১৩, আমার এটি করার দরকার নেই - আপনার কালো দণ্ডটি সম্পূর্ণ উপেক্ষা করা উচিত এবং আপনার ভিউটি সরাসরি মূল দৃশ্যে টেনে আনুন / ছেড়ে দেওয়া উচিত এবং এটি দুর্দান্ত কাজ করে (এক্সকোড ৪.৫+)
অ্যাডাম

একই কাস্টম কন্ট্রোলার - যদি আমি প্রাক্তন হয়ে থাকি তবে কি সেই কাস্টম ইউভিউ পুনরায় ব্যবহার করা সম্ভব? দুটি কাস্টম ইউভিউ প্রয়োজন - এবং যদি এটি হয়?
মর্টেন গুস্টাফসন

4
ডাং, আমি কেবল একটি পৃথক xib তৈরি করতে পছন্দ করি। 6 মাসের মধ্যে যখন অ্যাপটি আপডেট করতে হবে তখন আমি সম্ভবত এই সবগুলি মনে রাখব না।
Sandy

যদিও এটি দুর্দান্ত উত্তর, আমি দুর্ঘটনাক্রমে আমার মনে করার মতো আরও একটি ভাল উপায় খুঁজে পেয়েছি। প্রকৃত দেখার উপাদানগুলিতে আউটলেটগুলি হুক করার সময়। যদি আপনি এই জাতীয় অভ্যন্তর দৃশ্যের একটি অংশের উপরে কিছুটা ঘুরে দেখেন - এটি সহজ নির্বাচনের জন্য পপ আপ হয়। তারপরে আপনি এটি স্টোরিবোর্ডে দেখেন ...
ওদেড বেন ডভ

7
যদিও এটি একটি অবিশ্বাস্য প্রশংসনীয় historicতিহাসিক উত্তর, সত্যই এটি এখন সম্পূর্ণ পুরানো totally অ্যাপল "কন্টেইনার ভিউগুলি" প্রবর্তন করে পুরো বিষয়টি স্থির করে, যা এখন অ্যাপ্লিকেশনগুলি তৈরি করার সময় আপনি করণীয় কেন্দ্রীয়, মৌলিক জিনিস - সবকিছুই একটি "ধারক দর্শন" all শুভকামনা ধন্যবাদ, এটি এখন খুব সহজ!
ফ্যাটি

11

আপনি যদি কেবল নিজের দৃষ্টিভঙ্গিগুলি অন্য কোথাও তৈরি করতে চান (যেখানে আপনার গল্পের বোর্ডে নেই) তবে এটি সম্পাদন করার জন্য খুব সহজ উপায় আছে:

1) আপনার CustomViewControllerনিজস্বগুলি তৈরি করুন ( abcdControllerআমি যে কোডটিতে চেষ্টা করেছি তাতে) xibযথারীতি তাদের স্বতন্ত্র গুলি দিয়ে তৈরি করুন ।

২) স্টোরি বোর্ডে একটি UIViewController(বা যা কিছু ছিল তার সুপারক্লাস CustomViewController) যুক্ত করুন।

3) এখানে প্রদর্শিত হিসাবে CustomViewControllerপরিবর্তে কাস্টমক্লাস সেট UIViewControllerকরুন:

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

4) অবশেষে, আপনার মধ্যে viewDidLoad, কাস্টমটি লোড করুন xibএবং আপনার কাজ শেষ।

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSBundle mainBundle] loadNibNamed:@"abcdController" owner:self options:nil];
    // Do any additional setup after loading the view from its nib.
}

4
আপনার খুব বিস্তৃত উত্তরের জন্য ধন্যবাদ, তবে আমি আসলে কাস্টম ভিউ কন্ট্রোলার খুঁজছি না, তবে একটি কাস্টম ভিউ (একটি উইজেট) খুঁজছি যা একটি স্ট্যান্ডার্ড ইউআইভিউকন্ট্রোলারের সাথে যুক্ত হয়। সুতরাং ভিউ কন্ট্রোলারটি সমস্যা নয়, তবে আমি ভাবছিলাম কাস্টম উইজেটগুলি তৈরি করার জন্য সর্বোত্তম পদ্ধতির কী। হয় ক) আমি আগে যেমন করেছিলাম তেমনি একটি। Xib ফাইল বা বি) অন্য কিছু পদ্ধতির যা আমি জানি না, এখনও :-)
znq

4
হুম ... আমি মনে করি আপনি যা চান তা পেয়েছি। মূলত আপনি একই নিয়ামকের সাথে একাধিক মতামত পরিচালনা করতে চান, তাই না? আমি loadNibNamedসে ক্ষেত্রে ব্যতীত অন্য কোনও
উপায়ের কথা

এই আমার জন্য এই সমস্যার সমাধান stackoverflow.com/questions/11047991/... তবে viewDidLoad পরিবর্তে, আমি loadView ব্যবহৃত ...
Morkrom

4
কেবল পুনরাবৃত্তি করার জন্য, এটি সমস্ত (মঙ্গলভাবের জন্য ধন্যবাদ!) এখন সম্পূর্ণ ধার্য হয়েছে যে ধারক দর্শনগুলি এখানে। কেবলমাত্র একটি ধারক দৃশ্যে ক্লিক করুন এবং এটি শেষ হয়েছে
ফ্যাটি

1

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

ex:
MyViewController* myViewController = [[UIStoryboard storyboardWithName:@"Main"  bundle:nil] instantiateViewControllerWithIdentifier:@"myViewController"];
UIView* view = myViewController.view; //Get the view from your StoryBoard.

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

ধন্যবাদ বিজয়

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