স্টোরিবোর্ড এক্সকোডে অভিযোজিত সেগুন 6. ধাক্কা হ্রাস করা হয়?


121

ডিফল্টরূপে এক্সকোড 6 ইন্টারফেস বিল্ডারের কাছে নতুন চেকবক্স রয়েছে "ব্যবহারের আকারের ক্লাসগুলি"। এটি মতামতকে অভিযোজিত করে তোলে। এখানে চিত্র বর্ণনা লিখুন

আমি যখন আমার স্টোরিবোর্ডে 2 টি দর্শনের মধ্যে সেগুটি তৈরি করার চেষ্টা করি তখন আমার কাছে নতুন বিকল্প রয়েছে: এখানে চিত্র বর্ণনা লিখুন

পরিবর্তে পুরানো:

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

এখন আমাদের কাছে "পুশ" এবং "মডেল" এর পরিবর্তে "শো" এবং "উপস্থিত মডেল" রয়েছে। পুরানো বিকল্পগুলি হ্রাস করা হিসাবে চিহ্নিত করা হয়েছে। আমি "শো" বিকল্পটি বেছে নিয়েছি, কারণ সেগু সেটিংসে এটি "শো (উদাহরণস্বরূপ ধাক্কা) বলে called

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

কিন্তু এটি ধাক্কা তোলে না। সেগু অ্যানিমেশনটি নীচের দিক থেকে স্লাইডের মতো দেখাচ্ছে (মডেল) এবং নেভিগেশন বার অদৃশ্য।

প্রশ্নটি: আমি কীভাবে "শো" পুশের মতো কাজ করতে পারি? এটি কি সম্ভব বা এর পরিবর্তে আমার কি "পুশ (অবমূল্যায়ন)" ব্যবহার করা উচিত? নতুন ধরণের সেগ সম্পর্কে আমি কোথায় তথ্য পেতে পারি? আইওএস 8 বিকাশকারী লাইব্রেরিতে আমি যে জিনিসটি পেয়েছি তা হ'ল স্টোরিবোর্ডগুলি আপনাকে আপনার ব্যবহারকারী ইন্টারফেসটি ডিজাইন করতে সহায়তা করে তবে "শো" সেগ সম্পর্কে কোনও তথ্য নেই।

হালনাগাদ

আমি নতুন প্রকল্প তৈরি করার চেষ্টা করেছি এবং "শো" সত্যিই "পুশ" এর মতো কাজ করে। আমি মনে করি আমার প্রকল্পের সমস্যাটি কারণ এটি আমি কোড সহ নেভিগেশন কন্ট্রোলারটিকে পুনরায় ব্যবহার করি, তবে আমি কীভাবে এটি ঠিক করব জানি না।

if ( [segue isKindOfClass: [SWRevealViewControllerSegue class]] ) {
    SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue;
    
    swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {
        
        UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController;
        [navController setViewControllers: @[dvc] animated: NO ];
        [self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
    };
    
}

এর পরে আমি মেনভিউকন্ট্রোলারের পরে নিউভিউকন্ট্রোলারকে ধাক্কা দেওয়ার চেষ্টা করি এখানে চিত্র বর্ণনা লিখুন

আপডেট 2:

আমি কেবল আইওএস 7, আইওএস 7.1 ইস্যু বলে মনে হচ্ছে।

উত্তর:


97

হ্যাঁ, 'পুশ' এর পরিবর্তে 'শো' ব্যবহার করুন

আমি কীভাবে "শো" পুশের মতো কাজ করতে পারি? এটি কি সম্ভব বা এর পরিবর্তে আমার "পুশ (বর্ণিত)" ব্যবহার করা উচিত?

এটা করা উচিত; এটা আমার জন্য। আমি এক্সকোড 6 বিটা 2 ব্যবহার করছি এবং একক দর্শন টেমপ্লেট ব্যবহার করেছি (IB 'VC_A' এ প্রিমেড ভিউ কন্ট্রোলারকে কল করছি) তা পরীক্ষা করতে। আমি তখন অন্য ভিউ কন্ট্রোলার ('ভিসি_বি') যুক্ত করেছি। আমি তখন ভিসি_বিতে একটি বাটন যুক্ত করে ভিসি_বি থেকে অন্য একটিতে ভিসি_বি থেকে ভিসি_এতে ফিরে এসেছি। আমি যখন স্টোরিবোর্ডে প্রাথমিক ভিউ কন্ট্রোলার হিসাবে একটি নেভিগেশন কন্ট্রোলার যুক্ত করি এবং ভিসি_একে রুটভিউ কনট্রোলার হিসাবে তৈরি করি, তখন 'পুশ' এবং 'শো' উভয়েরই একই প্রভাব থাকে। আমার কাছে যদি প্রাথমিক নেভিগেশন কন্ট্রোলার না থাকে এবং আমি 'শো' ব্যবহার করি আপনি ভিসি_বি নীচে থেকে একটি স্লাইড যা করেছেন তাতে আপনি যা বর্ণনা করেছেন তা পেয়েছি। যদি আমি 'ধাক্কা' দেওয়ার চেষ্টা করি তবে ধাক্কা দেওয়ার জন্য আমার ক্র্যাশ হয়ে যায় তবে অবশ্যই আমার নেভিগেশন নিয়ামক থাকতে হবে।

নতুন ধরণের সেগ সম্পর্কে আমি কোথায় তথ্য পেতে পারি?

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


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

সুতরাং আপনার আপডেটটি দেখার সময় আমি যে প্রথম জিনিসটি দেখতে পাচ্ছি তা হ'ল আপনি কাস্টম সেগুর প্রত্যাশায় ব্যবহার করছেন: 'এসডাব্লিউরিওয়ালভিউ কনট্রোলারসেটু' সুতরাং হ্যাঁ সম্ভবত এটি আপনার ক্ষেত্রে 'শো' বা 'পুশ' ব্যবহার করা বোধগম্য নয় যেহেতু সেগুলি তৈরি করা হয়েছে since আপনি নিজের কাস্টম কোডটি চালাতে চাইছেন এমন বিভাগগুলি। আমি যখন নমুনা প্রকল্পটি ডাউনলোড করি, এটি এমনকি স্টোরিবোর্ড ফাইলের সেগগুলিতে 'কাস্টম' নির্বাচন করতে দেখায়।
স্পেন্সার হল

আমি এই সিগু বলতে চাইনি। আমি "মেইনভিউকন্ট্রোলার" এর পাশেই নতুন ইউআইভিউউকন্ট্রোলার তৈরি করার কথা বলছিলাম (এটিতে নেভিগেশন কন্ট্রোলার রয়েছে এবং আমার "আপডেট" কেবল এটি কীভাবে পাবেন তা দেখায়) এবং নতুন ভিউটিকে মেইনভিউ কনট্রোলারের দিকে ঠেলে দেওয়ার চেষ্টা করা হয়। স্টোরিবোর্ডের স্ক্রিনশট যদি আপনি নমুনা প্রকল্পে "আকারের ক্লাসগুলি" সক্ষম করেন, নিউভিউ কনট্রোলার তৈরি করেন এবং "শো" দিয়ে মেইনভিউকন্ট্রোলার এবং নিউভিউ কনট্রোলারের মধ্যে সেগমেন্ট তৈরি করার চেষ্টা করেন তবে আমি কৃতজ্ঞ থাকব। আপনি কি আমি কথা বলছি দেখতে পাবেন।
জন কাকন

এটি কি এখনই হয়েছে এবং কমপক্ষে আমার জন্য "শো" ঠিক "পুশ" এর মতো পরিচালিত হয়েছিল।
স্পেনসার হল

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

33

ইতিমধ্যে স্বীকৃত উত্তর আছে, তবে আমি কিছুটা আরও তথ্য দিতে চেয়েছিলাম, সম্ভবত এমন তথ্য যা আগে পাওয়া যায়নি।

যেমনটি আগেই উল্লেখ করা হয়েছিল, "পুশ" এবং "মডেল" বিভাগগুলি অবমূল্যায়ন করা হয়েছিল এবং যথাক্রমে "শো" এবং "উপস্থিত মডেল" দ্বারা প্রতিস্থাপিত হয়েছে। অ্যাপলের ডকুমেন্টেশন অনুসারে, নতুন সেগগুলি আরও সেগগুলিতে বিভক্ত করা হয়েছে যা আকার শ্রেণীর সাথে খাপ খায়। পুরানোগুলি কেবল আইওএস 8 এর চেয়ে পুরানো আইওএস সংস্করণগুলিকে সমর্থন করতে ব্যবহার করা উচিত।

নীচের লিঙ্কের নথিতে এটি এবং পুরানো এবং নতুন সমস্ত উপলভ্য বিভাগগুলির বর্ণনা ব্যাখ্যা করা হয়েছে।

স্টোরিবোর্ডে দৃশ্যের মাঝে একটি সেগু যুক্ত করা

ভবিষ্যতে ইউআরএল পরিবর্তিত হওয়ার ক্ষেত্রে, প্রতিটি নতুন সিগের জন্য এটি দেওয়া ব্যাখ্যা:

প্রদর্শনী

স্ক্রিনের বিষয়বস্তুর উপর নির্ভর করে সামগ্রীটি বিশদ বা মাস্টার এরিয়াতে উপস্থাপন করুন। অ্যাপ্লিকেশনটি যদি কোনও মাস্টার এবং বিশদ দর্শন প্রদর্শন করে তবে সামগ্রীটি বিশদ অঞ্চলে ঠেলাঠেলি করা হবে। যদি অ্যাপ্লিকেশনটি কেবলমাত্র মাস্টার বা বিশদ প্রদর্শন করে থাকে তবে সামগ্রীটি বর্তমান দর্শনের নিয়ামক স্ট্যাকের শীর্ষে চাপ দেওয়া হয়।

বিস্তারিত দেখাও

বিস্তারিত অঞ্চলে বিষয়বস্তু উপস্থাপন করুন। যদি অ্যাপটি কোনও মাস্টার এবং বিশদ দর্শন প্রদর্শন করছে তবে নতুন সামগ্রী বর্তমান বিশদটি প্রতিস্থাপন করবে। যদি অ্যাপ্লিকেশনটি কেবলমাত্র মাস্টার বা বিশদ প্রদর্শন করে থাকে তবে সামগ্রীটি বর্তমান দর্শনের নিয়ামক স্ট্যাকের শীর্ষটিকে প্রতিস্থাপন করে।

মডেললি উপস্থাপন করুন

মডেল উপস্থাপন করুন। উপস্থাপনা শৈলী (ইউআইমোডালপ্রেজেন্টেশন স্টাইল) এবং একটি ট্রানজিশন স্টাইল (ইউআইএমওডাল ট্রানসিশন স্টাইল) চয়ন করার বিকল্প রয়েছে।

পপওভার হিসাবে উপস্থিত

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


24

tldr; সেগ মুছে ফেলুন যা সঠিকভাবে চাপ দিচ্ছে না এবং কোনও স্ট্রিমবোর্ডে ইউআইভিউ / ইউআইসিএন্ট্রোল থেকে টার্গেট ভিউ কন্ট্রোলারে টেনে এনে পুনরায় তৈরি করুন।

অন্যান্য উত্তরের সাথে কোনও ভুল নেই তবে এটি একটি যা যা ঘটছে তা ব্যাখ্যা করে, কীভাবে আপনি এটি যাচাই করতে পারবেন এবং ভবিষ্যতে কীভাবে সমস্যাটি প্রশমিত করবেন তা ব্যাখ্যা করতে পারেন।

পটভূমি

আমার ক্ষেত্রে, আমার শো সেগগুলি কেউ কাজ করছে না যদিও আমার কাছে ইতিমধ্যে আমার প্রাথমিক ভিউ কন্ট্রোলার হিসাবে একটি ইউআইএনএভিগেশন কন্ট্রোলার ছিল (এটির মূল হিসাবে আমার সামগ্রী ইউআইভিউকন্ট্রোলার সহ)।

কেন এবং কীভাবে শো সেগু ব্রেক হয়

স্টোরিবোর্ডের উত্স xml এর মধ্যে সেগের সাথে সম্পর্কিত কোনও ক্রিয়া যুক্ত হলে শো সেগু বিরতি ঘটে Show আপনি কোডে পূর্বে কল করা ম্যানুয়াল সেগু থেকে কোনও সেগটিকে নতুন সংজ্ঞা দিলে এটির সাধারণ পরিস্থিতি হতে পারে। এটি স্টোরিবোর্ডের এক্সএমএলে নিম্নলিখিত বিটগুলি ফেলে।

<connections>
    <segue destination="85t-Z1-hxf" kind="show" identifier="ToOptions" action="showDetailViewController:sender:" id="gdZ-IX-KcN">
</connections>

নোটা বেন স্টোরিবোর্ডকে এক্সএমএল হিসাবে দেখতে; স্টোরিবোর্ড ফাইলটিতে ডান ক্লিক করুন এবং> উত্স কোড হিসাবে খুলুন নির্বাচন করুন । প্রত্যাবর্তনের জন্য> ইন্টারফেস বিল্ডার - স্টোরিবোর্ড হিসাবে খুলুন

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

দুর্ভাগ্যক্রমে সবচেয়ে সরাসরি সমাধান ব্যর্থ হয়। সুতরাং কেবল স্টোরিবোর্ডের মধ্য থেকে ক্রিয়াটির জন্য এক্সএমএল বৈশিষ্ট্যটি সরিয়ে ফেললে সমস্যাটির সমাধান হবে না । পরিবর্তে একটিকে কেবল স্টোরিবোর্ডে সেগটি মুছতে এবং পুনরায় তৈরি করতে হবে

স্টোরিবোর্ড এক্সএমএলটি পুনরায় তৈরি করা হলে নির্দিষ্ট সেগের সাথে আর কোনও ক্রিয়া যুক্ত থাকবে না এবং শোটি পুশ হিসাবে কার্যকর হবে ute

সঠিক শো সেগুয়ের জন্য নমুনা এক্সএমএল

  <connections>
    <segue destination="RbV-Au-WV9" kind="show" identifier="ToOptions" id="5dm-os-bcS"/>
  </connections>

প্রশমন

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


3
কয়েক ঘন্টা পরে, এটি সম্ভবত আমাকে আরও কয়েক ঘন্টা বাঁচিয়েছে। এখানে, আমি উপরোক্তটির ভিত্তিতে যা পরামর্শ দেব তা: উত্স কোড হিসাবে স্টোরিবোর্ডটি খুলুন , টাইপ করুন = "শো" এর জন্য অনুসন্ধান করুন এবং লাইনে অ্যাকশন = "শোডেটলভিউ কনট্রোলার: প্রেরক:" এর মতো কিছু রয়েছে কিনা তা দেখুন, ক্রিয়া থেকে সমস্ত কিছু মুছুন: = সমাপ্ত হওয়া অবধি " । আমার কাছে সত্যিকারের বিশাল স্টোরিবোর্ড রয়েছে এবং প্রভাবিত সিকোয়ামে এই ক্রিয়া প্যারামিটারটি ছিল না তবে অন্য কোনও সম্পর্কযুক্ত লাইন ছিল I একবার আমি ক্রিয়াটি মোছার পরে সমস্ত অভিযোজিত সিকোয়েন্সগুলি প্রত্যাশা অনুযায়ী আবার কাজ করেছিল Just t work।
মার্কাস

এটি আমাকেও বাঁচিয়েছে।
অ্যাডাম বারডন

1
এক্সএমএলে ক্রিয়াকলাপটি মুছে ফেলা আমার বন্ধুর জন্য কাজ করেছে।
ব্রেন্ট রয়েল-গর্ডন

আমাকেও বাঁচিয়েছে
জিমি জর্জি থমাস

এক্সএমএল ফাইল এবং ভয়েলা এ্যাকশন অ্যাট্রিবিউট মোছা হয়েছে, এটি কাজ করে। এই পোস্টটি ছাড়া সমস্যাটি কখনও খুঁজে পেত না।
krizzzn

20

স্কট রবার্টসন এখানে যেমন মন্তব্য করেছেন , এটি আইওএস 7-তে বাগের মতো দেখাচ্ছে।

এটি আইওএস 8 এ রূপান্তরটি রানটাইম (সঠিক আচরণ) এ অনুমান করা হয়, যখন আইওএস 7-এ রূপান্তরটি ডিজাইনের সময় (বগী আচরণ) এ অনুমান করা হয়।

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

দ্রষ্টব্য: একটি নেভিগেশন বার অনুকরণ এই উদ্দেশ্যে যথেষ্ট নয়; আপনার অবশ্যই এটির পুশ স্ট্যাকের মধ্যে একটি নেভিগেশন নিয়ামক থাকতে হবে।

বাগ পুনরুত্পাদন করতে:

  1. আকারের ক্লাস ব্যবহার করে এমন একটি নতুন স্টোরিবোর্ড তৈরি করুন।
  2. একটি দুটি দর্শন নিয়ামক তৈরি করুন (কোনও নেভিগেশন নিয়ন্ত্রণকারী নেই)।
  3. উদাহরণস্বরূপ, একটি বাটনের সাথে লিঙ্কযুক্ত শো (উদাহরণস্বরূপ পুশ) সেগুনের মাধ্যমে প্রথম ভিউ নিয়ন্ত্রককে দ্বিতীয় ভিউ নিয়ন্ত্রক দেখান Make
  4. কোডে, প্রথম দর্শন নিয়ামকটি দেখান, তবে initWithRootViewController:পদ্ধতিটির মাধ্যমে এটিকে নেভিগেশন নিয়ন্ত্রকের মধ্যে এম্বেড করুন ।
  5. আইওএস 7 এ অ্যাপটি চালান।
  6. ধাক্কা সঞ্চালন করা উচিত যে বোতামটি আলতো চাপুন।
  7. আপনি আইওএস on. এ চাপ দেওয়ার পরিবর্তে একটি মডেল রূপান্তর পাবেন iOS আইওএস ৮-এ আপনি সঠিক, ধাক্কার আচরণ পাবেন।

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

বাগ ঠিক করতে:

  1. স্টোরিবোর্ডে একটি নেভিগেশন নিয়ন্ত্রক যুক্ত করুন এবং প্রথম দেখার নিয়ামককে রুট ভিউ নিয়ন্ত্রক হিসাবে সেট করুন। (দ্রষ্টব্য: রুট ভিউ নিয়ন্ত্রণকারী হিসাবে দ্বিতীয় যুক্ত করা এই বাগটি ঠিক করবে না fix)
  2. এটিকে নেভিগেশন নিয়ামকটি অ্যাক্সেসযোগ্য না হওয়ার বিষয়ে সতর্কতা দমন করতে এবং নিজেকে একথা নথিভুক্ত করতে একটি জাঙ্ক সনাক্তকারী দিন Give (যেমন workaround for show segues in iOS 7)

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

দ্বিতীয় ছবিতে কীভাবে নেভিগেশন নিয়ন্ত্রক যুক্ত করা হয়েছে এবং কীভাবে এটিতে কোনও আগমনকারী তীর নেই তা লক্ষ্য করুন (যেমন এর ভিউ কন্ট্রোলার শনাক্তকারী ব্যবহার করে এটি ইনস্ট্যান্ট করার কোনও উপায় নেই)।


1
ধন্যবাদ, আইএমটি নেভিগেশন নিয়ন্ত্রণকারীদের সাথে কৌতুকটি আমার পক্ষে হয়েছিল যখন আমি ন্যাভিগেশন নিয়ন্ত্রকগুলি দেখব নিয়ন্ত্রক-স্ট্যাক
পিটার পিন্ট

1
সব থেকে ভালো সমাধান. ধন্যবাদ

13

আমি জানি আমি এই মুহূর্তে দেরি করেছি তবে আমি যা শিখেছি তা ভাগ করে নিতে চাই। এটি আসলে একটি বাগ এবং এটি আজও রয়েছে (2014-12-18)।

আমি এই সম্পর্কে একটি নিবন্ধ লিখেছিলেন এখানে

এটি সহজেই পুনরুত্পাদনযোগ্য; সিউজির কল করার আগে আপনি যতক্ষণ না কোনও ভিউ কন্ট্রোলারটিকে স্ট্যাকের মধ্যে স্ট্যাকের মধ্যে চাপ দেন না ততক্ষণ আইওএস 8-তে ঠিক জরিমানা এবং আইওএস 7.x এও কাজ করবে Show

আপনি যদি কেবল স্টোরিবোর্ড সংযোগ ব্যবহার করে স্ট্যাকের দিকে চাপ দেন তবে এটি কার্যকর হবে; তবে আপাতদৃষ্টিতে যদি আপনি কোডের মাধ্যমে কোনওভাবে ধাক্কা দেন তবে ধাক্কা খাওয়ার navigationControllerসম্পত্তিটি UIViewControllerহবে nilএবং আপনি যখন কল করবেন তখন Showএটি একটি মডেল হিসাবে ধরে নেবে কারণ স্ট্যাকটি নিয়ন্ত্রণ করার জন্য কোনও নেভিগেশন নেই।

কেবলমাত্র এ পর্যন্ত কাজটি কোডের মাধ্যমে ধাক্কা দেয় না (সম্ভাব্য নয়) বা এখন অবনমিত হিসাবে ব্যবহার করা হয় না Push

আমি একটি রাডার দায়ের করেছি (নিবন্ধটির লিঙ্ক)। অ্যাপল এই সমস্যাটি সমাধানের আশা নিয়ে নকল ফাইল ফাইল করুন।


3
এটা ঠিক আমার সমস্যা ছিল, ধন্যবাদ! অবহেলিত পুশ ব্যবহার করা এক্ষেত্রে কম খারাপ সমাধান বলে মনে হচ্ছে।
মোশে গটলিয়েব

আর একটি কাজ হ'ল স্টোরিবোর্ডে একটি (অব্যক্ত) নেভিগেশন কন্ট্রোলার যুক্ত করা। দেখুন stackoverflow.com/questions/24184003/...
Senseful

Nop! এটি এখানে ঘটছে এবং কারণটি কোনও প্রোগ্রামিক্যালি ধাক্কা নয়। আমার ক্ষেত্রে আমি একটি সেগুটি সম্পাদন করি Show, তারপরে দ্বিতীয় Showসেগুতে এটি উপস্থাপন করা হয়, সলিউশন?
ফ্রেড

@ ফ্রেড আপনি কি গিথুব রেপোতে লিঙ্ক করতে পারবেন যেখানে এটি পুনরুত্পাদনযোগ্য? আপনি কি iOS এর কোন সংস্করণে চলছে?
ইস্টটোরে

বেসরকারী প্রকল্প .. Showআইওএস 7
ফ্রেড

2

এক্সকোড 7 এবং আইওএস 7.1.2 এ সেগগুলি নিয়ে আমার একই সমস্যা ছিল। সেগগুলি দেখান (আইওএস 8 এর নতুন বৈশিষ্ট্য) আইওএস 7-এ মডেল সেগুসের মতো কাজ করে এবং যখন আপনি আপনার স্টোরিবোর্ডে এক্সকোডের সাথে সিগু টাইপ সংজ্ঞায়িত করেন তখন আপনার ভিউ কন্ট্রোলারগুলিকে নেভিগেশন কন্ট্রোলার স্ট্যাকের দিকে ঠেলে দেবেন না। এজন্য আপনার স্ব-নেভিগেশন নিয়ন্ত্রণকারী শূন্য হয়ে যাবে কারণ ভিউ কন্ট্রোলারটিকে স্ট্যাকের দিকে ঠেলে দেওয়া হয়নি এবং আপনি এটি পপ করতে পারবেন না।

আমি বুঝতে পারছি না যে অ্যাপল আইওএসে কাজ করার জন্য আপনার অ্যাপ্লিকেশনটির প্রয়োজন হলে এক্সকোডে কেন এই মামলার জন্য কোনও বিজ্ঞপ্তি যুক্ত করেনি They তারা বলছেন যে পুশ পদ্ধতিটি হ'ল, তবে শো আইওএস 7 এর সাথে সঠিকভাবে কাজ করে না।

সমস্যাটি সমাধান করতে আমি কী করেছি:

আমি .H দিয়ে MYShowSegue ক্লাস তৈরি করেছি

#import <UIKit/UIKit.h>

@interface MYShowSegue : UIStoryboardSegue

@end

এবং কেবলমাত্র একটি সম্পাদন পদ্ধতি সহ .m ফাইল :

#import "MYShowSegue.h"

@implementation MYShowSegue

- (void) perform {

    if ([[[self sourceViewController] navigationController] respondsToSelector:@selector(showViewController:sender:)]) {

        id sender = nil;
        [[[self sourceViewController] navigationController] showViewController:[self destinationViewController] sender:sender];
    }else{

        [[[self sourceViewController] navigationController] pushViewController:[self destinationViewController] animated:YES];
    }
}

@end

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

কাস্টম সেগু উদাহরণ

এই সমাধান বিষয়ে সাহায্য পেতে আপনার iOS 7 অ্যাপ্লিকেশনগুলির একটি পূর্ণ সমর্থন পেতে হবে, তারা ব্যবহার করবে pushViewController পদ্ধতি ধাক্কা আপনার দেখেছে এবং iOS 8,9 ইত্যাদি জন্য আপনার segue নতুন (iOS 8 এ) মেথড সঙ্গে কাজ করবে showViewController

আপনার স্টোরিবোর্ডে আপনার সমস্ত বিভাগগুলির সাথে এটি করতে ভুলবেন না।


চমৎকার সমাধান - আমার জন্য কাজ করেছে (পরিবর্তে "অব্যবহৃত" নেভিগেশন কন্ট্রোলার যুক্ত করার পরিবর্তে ...
লরেনজ গ্ল্যাক

1

এটি আইওএস 10.x এ এখনও চলছে

বিভাগগুলি মুছে ফেলা এবং পুনরায় ইনস্টল করা আমার জন্য কোনও সমস্যার সমাধান করেনি:

সমস্যা: প্রত্যাশিত কার্যকারিতা ছিল se টি সেগু যা কেবল 'ধাক্কা' (আসলে একটি শো বিশদ) হিসাবে কাজ করে তবে বাস্তবে আমি যে প্রথম প্রথম সেগুটি যুক্ত করেছি তা ধাক্কা দেবে, অন্যরা সকলেই বিনয়ী আচরণ করবে। এটি ইন্টারফেস বিল্ডার প্রতিটি সেগগুলিকে একইভাবে বর্ণনা করার পরেও।

সমাধান: আমাকে 6 টি সেগগুলিতে অ্যাকশন যুক্ত করতে হয়েছিল যা এটি ছিল না।

মূল স্টোরিবোর্ড এক্সএমএল ML

<connections>
  <segue destination="tIr-4a-WfZ" kind="showDetail" identifier="A" action="showViewController:sender:" id="8yd-Ne-7KA"/>
  <segue destination="4mB-YE-5dM" kind="showDetail" identifier="B" id="Uod-JC-786"/>
  <segue destination="Qh5-bJ-KcE" kind="showDetail" identifier="C" id="3PW-nV-hWl"/>
  <segue destination="EI6-f4-QBB" kind="showDetail" identifier="D" id="WUK-ju-KDm"/>
  <segue destination="nTz-N4-fpW" kind="showDetail" identifier="E" id="Id6-bW-Huc"/>
  <segue destination="JEp-CH-6dW" kind="showDetail" identifier="F" id="G0L-XW-7f4"/>
  <segue destination="AET-S1-O6h" kind="showDetail" identifier="G" id="3NK-93-wTy"/>
</connections>

আমি শো ভিউকন্ট্রোলার: প্রেরক যোগ করে এটি পরিবর্তন করেছি

<connections>
  <segue destination="tIr-4a-WfZ" kind="showDetail" identifier="A" action="showViewController:sender:" id="8yd-Ne-7KA"/>
  <segue destination="4mB-YE-5dM" kind="showDetail" identifier="B" action="showViewController:sender:" id="Uod-JC-786"/>
  <segue destination="Qh5-bJ-KcE" kind="showDetail" identifier="C" action="showViewController:sender:" id="3PW-nV-hWl"/>
  <segue destination="EI6-f4-QBB" kind="showDetail" identifier="D" action="showViewController:sender:" id="WUK-ju-KDm"/>
  <segue destination="nTz-N4-fpW" kind="showDetail" identifier="E" action="showViewController:sender:" id="Id6-bW-Huc"/>
  <segue destination="JEp-CH-6dW" kind="showDetail" identifier="F" action="showViewController:sender:" id="G0L-XW-7f4"/>
  <segue destination="AET-S1-O6h" kind="showDetail" identifier="G" action="showViewController:sender:" id="3NK-93-wTy"/>
</connections>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.