অন্য স্টোরিবোর্ডে সেগ?


133

একটি স্টোরিবোর্ড থেকে অন্য স্টোরিবোর্ডে সিগন করা, বা অন্য স্টোরিবোর্ডে কোনও ভিউ কন্ট্রোলারে একটি স্টোরিবোর্ড এম্বেড করা সম্ভব? আমি একটি স্থান প্রয়োজন UITabBarControllerএকটি UINavigationController, এবং আমি তাদের সুন্দর রাখা এবং আলাদা করতে চাই।


1
এই উত্তরটি তাকান stackoverflow.com/a/19702425/317928
vokilam

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

@ ব্রায়ানসচেতা আপনি আর কী করেন? অন্য কোনও ভাল অনুরূপ টিপস ভাগ করে নেওয়ার জন্য?
মধু

এটি আপনার দলের কাঠামোর উপর নির্ভর করে। আপনি যদি সত্যিই চাইতেন তবে আপনার সমস্ত ইউজার ইন্টারফেস আলাদা .xib ফাইলগুলিতে থাকতে পারে। স্টোরিবোর্ডগুলির অস্তিত্বের আগে এটি এভাবেই ব্যবহৃত হত। এই পদ্ধতির জন্য প্লাস এবং বিয়োগ রয়েছে। উত্সাহটি হ'ল এই প্রকল্পের অন্যান্য বিকাশকারীদের সাথে আপনার প্রায় কখনও বিরোধ নেই have খারাপ দিকটি অ্যাপ্লিকেশনটি দৃশ্যত প্রবাহিত করা কঠিন হতে পারে see
ব্রায়ান সাচেটা 21

উত্তর:


201

হ্যাঁ, তবে আপনাকে এটি প্রোগ্রামিয়ালি করতে হবে:

// Get the storyboard named secondStoryBoard from the main bundle:
UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil];

// Load the initial view controller from the storyboard.
// Set this by selecting 'Is Initial View Controller' on the appropriate view controller in the storyboard.
UIViewController *theInitialViewController = [secondStoryBoard instantiateInitialViewController];
//
// **OR**  
//
// Load the view controller with the identifier string myTabBar
// Change UIViewController to the appropriate class
UIViewController *theTabBar = (UIViewController *)[secondStoryBoard instantiateViewControllerWithIdentifier:@"myTabBar"];

// Then push the new view controller in the usual way:
[self.navigationController pushViewController:theTabBar animated:YES];

11
আমি সত্যিই স্টোরিবোর্ডগুলি আলাদা রাখতে চাই; তারা ইতিমধ্যে অনেক বিশৃঙ্খল।
Ry-

11
ঠিক যেমন একটি বইয়ের অধ্যায়গুলির মতো আমি একাধিক স্টোরিবোর্ডের প্রয়োজনীয়তা দেখতে পাচ্ছি।
ফিননেচেনহেল্প

48
আপনি যখন একই অ্যাপ্লিকেশনটিতে একাধিক বিকাশকারী কাজ করছেন, তখন একাধিক স্টোরিবোর্ডগুলি রাখা খুব দরকারী কারণ স্টোরিবোর্ডের এক্সএমএল সংস্করণ নিয়ন্ত্রণের বিরোধগুলি সমাধান করা সময়ে সময়ে বেশ বেদনাদায়ক হয়।
লি

14
আইওএস 9 এবং এক্সকোড 7-এ, ক্রস-স্টোরিবোর্ড উল্লেখ এখন সমর্থিত। :-)
কুইন টেলর

1
মিল্কিজির উত্তর দেখুন, আপনি এখন খুব সহজেই ইউআইতে এটি করতে পারেন!
টিম

117

এক্সকোড From থেকে, আপনি স্টোরিবোর্ড রেফারেন্স ব্যবহার করে গ্রাফিক্যালি এটি করতে পারেন:

উল্লেখ

আপনার স্টোরিবোর্ডে স্টোরিবোর্ড উল্লেখ যুক্ত করুন। ভিউকন্ট্রোলার এবং স্টোরিবোর্ড উল্লেখ (সিটিআরএল + ড্র্যাগ) এর মধ্যে সিগ তৈরি করুন

তারপরে এই ক্ষেত্রগুলি পূরণ করুন।

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

যেখানে "টিউটোরিয়াল" হল "টিউটোরিয়াল.স্টরিবোর্ড" ফাইল এবং "মেইনটিউটোরিয়ালকন্ট্রোলার" আপনার ভিউকন্ট্রোলারসেটেটিংয়ের "স্টোরিবোর্ড আইডি" ক্ষেত্র


1
ভাল তথ্য, তবে প্রশ্নটি আইওএস 5 ট্যাগ করা তাই এটি প্রযোজ্য না।
lnafziger

10
@ আইনাফজিগার হ্যাঁ তবে এই প্রশ্নটি আইওএস 9 ব্যবহার করা লোকগুলির জন্য অনুসন্ধানের ফলাফলগুলির শীর্ষে দেখায়
ব্রায়ান ওগডেন

এটি এক্সকোড 7 এর পরে উপলব্ধ। স্ট্যাকওভারফ্লো
সাইমন পিকআপ

এটি কাজ করেছে, তবে আমারও নেভিগেশন বারটি রাখা দরকার, এটি নেভিগেশন বার ছাড়াই প্রদর্শিত হচ্ছে, নেভিগেশন এবং বোতামটিকে ইতিহাসে ফিরিয়ে আনার কোনও উপায় আছে কি না, এটি স্টোরিবোর্ডটি থেকে আসে না কেন?
গিল বেরিথ

এটি আইওএস ১০-এ আমার জন্য কাজ করছে note আমি নোট করেছিলাম যে প্রতি সেগুতে আমার একটি স্টোরিবোর্ড রেফারেন্স প্রয়োজন এবং একাধিক সেগগুলি একটি রেফারেন্স পয়েন্টে সংযোগ করতে পারি না।
মার্ক রেড

10

আপনি সত্যিই সেগগুলি ম্যানুয়ালি করতে পারবেন না কারণ ইউআইএসটিরিবোর্ডস্যাগ একটি বিমূর্ত শ্রেণি। আপনাকে এটিকে সাবক্লাস করতে হবে এবং performএটি কিছু করার জন্য ক্রম প্রয়োগ করতে হবে। এগুলি আসলে স্টোরিবোর্ডে তৈরি হওয়া বোঝায়। আপনি ভিউ কন্ট্রোলারটিকে ম্যানুয়ালি চাপ দিতে পারেন, যদিও এটি একটি ভাল সমাধান। lnafziger এর উত্তর এটি ভাল করে:

UIStoryboard *secondStoryBoard = [UIStoryboard storyboardWithName:@"secondStoryBoard" bundle:nil];
UIViewController *theTabBar = [secondStoryBoard instantiateViewControllerWithIdentifier:@"myTabBar"];
[self.navigationController pushViewController:theTabBar animated:YES];

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


6
স্টোরিবোর্ডগুলি মার্জ করা খুব ভাল কাজ করে না, সুতরাং একটি বহু-বিকাশকারী-পরিবেশে, পৃথক স্টোরিবোর্ডগুলি ব্যবহার করা আকর্ষণীয় হতে পারে। এছাড়াও একক স্টোরিবোর্ড সহ বড় প্রকল্পগুলিতে পারফরম্যান্স বেশ খারাপ হতে পারে।
ক্যালিমার্কাস

1
আমরা একাধিক স্টোরিবোর্ড ব্যবহার করি, তবে মূল বিষয়টি হ'ল আপনি সত্যিই এটি করতে পারবেন না এবং তাদের মধ্যে সিগ করুন। অ্যাপল এটির নকশা করেছে যাতে আপনি এক জায়গায় সমস্ত কিছু করতে পারেন, সুতরাং ধারণাটি কেবলমাত্র একটির ব্যবহার করা (এটি নয় যে আপনি পারবেন না) kind পারফরম্যান্স কোনও সমস্যা হওয়া উচিত নয়। স্টোরিবোর্ডটি প্রতিটি দেখার নিয়ামকের জন্য পৃথক নিব ফাইলগুলিতে সংকলিত হয়। স্টোরিবোর্ডগুলি থেকে আপনার খুব ভাল অভিনয় করা উচিত। পারফরম্যান্সটি ঠিক তত ভাল হবে যদি আপনার প্রতিটি ভিউ কন্ট্রোলারের জন্য পৃথক xibs থাকে।
wbyoung

3
আমার ক্ষেত্রে, পারফরম্যান্স সমস্যাটি সাধারণত এক্সকোডে থাকে ... অ্যাপলটির স্টোরিবোর্ড সম্পাদকের বর্তমান প্রয়োগ দুর্বল।
আদম

1
একটি 60-দৃশ্যের স্টোরিবোর্ডটি 2014 ম্যাক প্রোতে খুলতে 13 সেকেন্ড সময় নেয়। আমি রাডার দিয়েছি।
রবার্ট অ্যাটকিন্স

7

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

ভিউ কন্ট্রোলারগুলিকে একত্রিত করার সময়, নিয়ন্ত্রণের ক্রমটি গুরুত্বপূর্ণ; শুধুমাত্র কিছু নির্দিষ্ট ব্যবস্থা বৈধ। শিশু থেকে পিতামাতার কাছে নিয়ন্ত্রনের ক্রমটি নিম্নরূপ:

  • বিষয়বস্তু দেখার নিয়ন্ত্রক এবং নমনীয় সীমানা রয়েছে এমন ধারক দর্শন নিয়ন্ত্রক (যেমন পৃষ্ঠার দৃশ্য নিয়ন্ত্রণকারী)
  • নেভিগেশন দর্শন নিয়ামক
  • ট্যাব বার নিয়ামক
  • স্প্লিট ভিউ কন্ট্রোলার

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

1
এবং তবুও নেটিভ আইফোন সংগীত অ্যাপটি ঠিক এটি করে ("এখন খেলছে" অংশ)।
এনজো ট্রান

এফওয়াইআই: আইফোন সঙ্গীত অ্যাপ্লিকেশনটির "এখন বাজানো" স্ক্রিনে ট্যাববারকন্ট্রোলার নেই।
সানজানা

4

এখানে একটি দ্রুত সংস্করণ:

let targetStoryboardName = "Main"
let targetStoryboard = UIStoryboard(name: targetStoryboardName, bundle: nil)
if let targetViewController = targetStoryboard.instantiateInitialViewController() {
    self.navigationController?.pushViewController(targetViewController, animated: true)
}

-1

আপনি কি নিম্নলিখিত চেষ্টা করেছেন:

আপনার নেভিগেশন নিয়ামক এবং শীর্ষ মেনুতে লিঙ্কযুক্ত আপনার দর্শন নিয়ন্ত্রণকারী নির্বাচন করতে 2 / ক্লিক করুন: সম্পাদক -> এম্বেড করুন -> ট্যাব বার নিয়ামক

দ্রষ্টব্য: আমি এটি পরীক্ষা করিনি কারণ আমি বিপরীতটি ব্যবহার করছি: ট্যাবড বার অ্যাপ্লিকেশন তৈরি করা এবং নেভিগেশন কন্ট্রোলারটি ভিতরে রেখে)।

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