প্রোগ্রামগতভাবে একটি সিগ তৈরি করা হচ্ছে


202

আমার একটি প্রচলিত বিষয় রয়েছে UIViewControllerযে সমস্ত UIViewsControllersকিছু সাধারণ ক্রিয়াকলাপ পুনরায় ব্যবহার করতে আমার প্রসারিত।

আমি এই "কমন" এর উপর একটি সিগ সেট করতে চাই UIViewControllerযাতে অন্য সমস্ত UIViewControllersউত্তরাধিকারী হয়।

আমি প্রোগ্রাম থেকে কীভাবে এটি করি তা জানার চেষ্টা করছি।

আমি অনুমান করি যে প্রশ্নটি স্টোরি বোর্ডে না গিয়ে কীভাবে segueআমার UIViewControllersসমস্তটির জন্য একটি সেট রাখি এবং হাতে হাতে এগুলি করব তাও হতে পারে ।

উত্তর:


169

সংজ্ঞা অনুসারে একটি স্টিগবোর্ডের মতো স্বাধীনভাবে স্বাধীনভাবে অস্তিত্ব থাকতে পারে না। এটা বর্গ নামে এমনকি সেখানে আছে: UIStoryboardSegue। আপনি প্রোগ্রামগতভাবে সেগগুলি তৈরি করেন না - এটি স্টোরিবোর্ড রানটাইম যা এগুলি আপনার জন্য তৈরি করে। আপনি performSegueWithIdentifier:নিজের ভিউ কন্ট্রোলারের কোডগুলিতে সাধারণত কল করতে পারেন , তবে এটি স্টোরিবোর্ডে ইতিমধ্যে কোনও সেগুন রেফারেন্স করার জন্য নির্ভর করে।

আমার মনে হয় আপনি যা জিজ্ঞাসা করছেন তা হ'ল আপনি কীভাবে আপনার সাধারণ ভিউ কন্ট্রোলারে (বেস ক্লাস) এমন একটি পদ্ধতি তৈরি করতে পারেন যা একটি নতুন দর্শন নিয়ন্ত্রকের কাছে রূপান্তরিত হয় এবং প্রাপ্ত সমস্ত শ্রেণীর দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হয়। আপনি আপনার বেস ক্লাস ভিউ কন্ট্রোলারের মতো একটি পদ্ধতি তৈরি করে এটি করতে পারেন:

- (IBAction)pushMyNewViewController
{
    MyNewViewController *myNewVC = [[MyNewViewController alloc] init];

    // do any setup you need for myNewVC

    [self presentModalViewController:myNewVC animated:YES];
}

এবং তারপরে আপনার উত্পন্ন ক্লাসে, উপযুক্ত বোতামটি ক্লিক করা হলে বা টেবিল সারিটি নির্বাচিত বা যা কিছু হোক না কেন সেই পদ্ধতিতে কল করুন।


4
ধন্যবাদ। এটি লজ্জার বিষয় যে আমরা এটি প্রোগ্রামিকভাবে করতে পারি না। এটি সত্যই সোর্স কোডের মান বাড়িয়ে তুলবে (কম সদৃশ সর্বদা ভাল)) আমি আপনার পরামর্শ সঙ্গে যেতে হবে।
টিয়াগো ভেলোসো

2
@ জোনক্রল কি স্যুইচ স্টেটমেন্ট থেকে সেল / কল করা / সম্পাদনা করা সম্ভব? আমার কোন সূচকের ভিত্তিতে?
কোডজুনকি

5
@ কোডেজুনকি: হ্যাঁ, আপনি এটি করতে পারেন। আপনি এর জন্য UIViewControllerনামের পদ্ধতিটি ব্যবহার করবেন performSegueWithIdentifier:sender:
জোনক্রোল

2
আমি প্রোগ্রামটিমেটিকভাবে সেগ তৈরি এবং সম্পাদন করছি (আমার উত্তর দেখুন)। আমার কোডে কিছু ভুল আছে, তাহলে, যদি আপনার উত্তরটি সঠিক হয়?
জিন-ফিলিপ পেলেট

13
আইওএস 6+ জন্য আপডেট করুন: UIViewএর presentModalViewController:animated:অসমর্থিত হয়েছে। থেকে ডক্স - (প্রয়োজন iOS 6.0 অননুমোদিত ব্যবহারের presentViewController: অ্যানিমেটেড: সমাপ্তির।। পরিবর্তে)
ব্যবহারকারী

346

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

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

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

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

ঠিক আছে, পরবর্তী আমি একটি প্রোগ্রামেটিক বার বোতাম আইটেমটি ব্যবহার করে সেগুন করতে যাচ্ছি। ভিডিডল্ড বা অন্য কোথাও আমি এই কোড সহ নেভিগেশন বারে একটি বোতাম আইটেম তৈরি করব:

UIBarButtonItem *buttonizeButton = [[UIBarButtonItem alloc] initWithTitle:@"Buttonize"
                                                                    style:UIBarButtonItemStyleDone
                                                                   target:self
                                                                   action:@selector(buttonizeButtonTap:)];
self.navigationItem.rightBarButtonItems = @[buttonizeButton];

ঠিক আছে, লক্ষ্য করুন যে নির্বাচকটি বোতামাইজ বাটনটাইপ :. সুতরাং সেই বোতামটির জন্য একটি অকার্যকর পদ্ধতি লিখুন এবং সেই পদ্ধতির মধ্যে আপনি সেগটিকে এভাবে কল করবেন:

-(void)buttonizeButtonTap:(id)sender{
    [self performSegueWithIdentifier:@"Associate" sender:sender];
    }

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

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"Associate"])
    {
        TranslationQuizAssociateVC *translationQuizAssociateVC = [segue destinationViewController];
        translationQuizAssociateVC.nodeID = self.nodeID; //--pass nodeID from ViewNodeViewController
        translationQuizAssociateVC.contentID = self.contentID;
        translationQuizAssociateVC.index = self.index;
        translationQuizAssociateVC.content = self.content;
    }
}

ঠিক আছে, এটি পরীক্ষা করে দেখুন এবং এটি কাজ করে। আশা করি এটি আপনাকে সহায়তা করবে।


@ মিশেলআরও কীভাবে এইগুলি পৃথকীকরণের প্রয়োজনকে দূর করে? আমি এটি দেখতে পাচ্ছি আপনাকে এখনও স্টোরিবোর্ডে গন্তব্য নিয়ন্ত্রকের কাছে টানতে এবং ছেড়ে দিতে হবে ..
এরিরিক ২

@ মিশেলআরও এটি বিভাগগুলির প্রয়োজনীয়তা দূর করে না। এটি যা করে তা আপনাকে ইন্টারফেস বিল্ডারের পরিবর্তে কোডটিতে নির্মিত ভিউ কন্ট্রোলারের মধ্যে বিভক্ত করতে দেয়।
ম্যাথু

@ ম্যাট এটি আসলে আমার অ্যাপটি কীভাবে সেটআপ করব তা সম্পর্কে আমার পুরোপুরি পুনর্বিবেচনা করুন ... সমস্ত UI এর সম্পূর্ণ পুনর্লিখনের পরে আমি আর কোনও বিভাগ ব্যবহার করি না ..
মাইকেল

@ কোকোয়ানট আমি "অ্যাপ্লিকেশনটি আধুনিকভাবে একটি সক্রিয় নিয়ন্ত্রক উপস্থাপনের চেষ্টা করেছিল" এই বিষয়ে কোনও সহায়তা হিসাবে ত্রুটি পাচ্ছি ..
বালা

1
ম্যানুয়াল সেগু "পুশ" অবমূল্যায়ন করা হয়েছে, "শো" ব্যবহার করুন। এই উত্তরে আরও বিশদ রয়েছে। @ স্মাইলবট দয়া করে উত্তরটি আপডেট করুন।
নাব্বাস

81

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

UIViewController *toViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"OtherViewControllerId"];
MyCustomSegue *segue = [[MyCustomSegue alloc] initWithIdentifier:@"" source:self destination:toViewController];
[self prepareForSegue:segue sender:sender];
[segue perform];

4
মাই কাস্টমসিগে কী আছে?
ভিক্টর এঙ্গেল

3
এটি একটি কাস্টম সাবক্লাস UIStoryboardSegue
জিন-ফিলিপ পেলিট

7
@ মার্ক অ্যামেরি প্রচুর লোক (আমাকে সহ) স্টোরিবোর্ড ব্যবহার করা এড়িয়ে চলে। এগুলি একীভূত করা শক্ত performSegueWithIdentifier:comp আমি নিজেই সিগি তৈরি করলে আমি সমস্ত সমস্যা এড়িয়ে চলি
জিন-ফিলিপ পেলিট

3
আমি জিন-ফিলিপের সাথে একমত স্টোরিবোর্ড পরিচালনা করা বাটের ব্যথা। অবশ্যই কয়েকটি ভিউ ক্রেস্ট করার মাধ্যমে এবং এখানে একটি সিগ এবং সেখানে একটি সিগ যুক্ত করার মাধ্যমে আপনার পথে ক্লিক করা সহজ, তবে এক্সএমএলে সংজ্ঞায়িত 16 টি সেগু সহ 6 টি দর্শন পরিচালনা করা, যখন আপনার সাথে তিনটি বিকাশকারী এটির সাথে সমস্ত বিড়বিড় করা ভয়ঙ্কর। যাইহোক, বিন্দুটি হল: কোড আপনাকে নিয়ন্ত্রণ দেয়, এক্সকোড দ্বারা উত্পাদিত এক্সএমএল দেয় না।
ক্রিশ্চিয়ান

3
আমি iOS7 এ [সিগু পারফরম্যান্স] এর একটি ক্র্যাশ দেখতে পাচ্ছি, অন্য কেউ এটি অনুভব করছে কিনা তা নিশ্চিত নয়।
এরিক চেন

45

অনুমান করুন যে এটির উত্তর দেওয়া হয়েছে এবং স্বীকৃত হয়েছে তবে আমি এটিতে আরও কয়েকটি বিশদ যুক্ত করতে চাই।

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

তারপরে সমস্ত লগইন কোড চেক করার পরে লগইনটি সঠিক ছিল কিনা আমি কল করব

[self performSegueWithIdentifier: @"myidentifier" sender: self];

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


4
আমি অন্য মন্তব্য হিসাবে লিখেছি: আমি প্রোগ্রামগতভাবে কাস্টম সেগগুলি তৈরি এবং সম্পাদন করছি (আমার উত্তর দেখুন)।
জিন-ফিলিপ পেলিট

32

আপনি UIStoryboardযে কোডটি ব্যবহার করছেন তাতে আপনার কোডটি লিঙ্ক করতে হবে । নিশ্চিত হয়ে নিন যে আপনি আপনার নিজের ভিউকন্ট্রোলারে গেছেন UIStoryboard, তার চারপাশের সীমানায় ক্লিক করুন এবং তার identifierক্ষেত্রটি এমন একটিতে সেট করুন যা আপনি আপনার কোডটিতেNSString কল করেছেন।

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" 
                                                     bundle:nil];
YourViewController *yourViewController = 
 (YourViewController *)
  [storyboard instantiateViewControllerWithIdentifier:@"yourViewControllerID"];
[self.navigationController pushViewController:yourViewController animated:YES];

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

1
আপনি এই সম্পর্কে বিস্তারিত বলতে পারেন? আমি মনে করি এটি আমারই সমস্যা, তবে এটি কীভাবে / কোথায় করা যায় তা খুঁজে পাচ্ছি না ...
jesses.co.tt

1
এমনকি এই সমাধানটি সঠিক, এটি কোনও সেলোগিকে এড়ানো সম্পর্কে, তবে প্রশ্নটি সেগের বিষয়ে। এইভাবে আপনি স্টোরিবোর্ডগুলিতে সেগ ব্যতীত দুটি দৃশ্যের মধ্যে সংযোগ স্থাপন করতে পারেন বা একটি রূপান্তর করতে পারেন।
বুটমেকার

16

স্টোরিবোর্ডে থাকা নিয়ামকদের জন্য।

jhilgert00 এই কি আপনি খুঁজছিলেন?

-(IBAction)nav_goHome:(id)sender {
UIViewController *myController = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeController"];
[self.navigationController pushViewController: myController animated:YES];

}

অথবা ...

[self performSegueWithIdentifier:@"loginMainSegue" sender:self];

3

ভাল, আপনি তৈরি করতে পারেন এবং ইউআইএসটিবোর্ডসিগ সাবগ্লাস করতে পারেন। সাবক্লাসিং বেশিরভাগ ক্ষেত্রে কাস্টম ট্রানজিশন অ্যানিমেশন দেওয়ার জন্য ব্যবহৃত হয়।

আপনি ডাব্লুডব্লিউডিসি ২০১১ এর স্টোরিবোর্ড চালু করার ভিডিও দেখতে পাচ্ছেন। এটি ইউটিউবেও উপলব্ধ।

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIStoryboardSegue_Class/Reference/Reference.html#//apple_ref/occ/cl/UIStoryboardSegue


3

আমি একটি ব্যাখ্যা যোগ করতে চাই ...

একটি সাধারণ ভুল বোঝাবুঝি, আসলে আমার যে কিছু সময়ের জন্য ছিল তা হ'ল prepareForSegue:sender:পদ্ধতি দ্বারা স্টোরিবোর্ড সেগ ট্রিগার করা । এইটা না. স্টোরিবোর্ড সেগু সঞ্চালন করবে আপনি এর prepareForSegue:sender:জন্য কোনও পদ্ধতি প্রয়োগ করেছেন কিনা তা বিবেচনা না করেই (ছাড়বে) দেখার জন্য নিয়ামক।

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

আপনি যদি স্টোরিবোর্ডে দুটি ভিউ কন্ট্রোলারের মধ্যে কোনও সিগ সংযোগ স্থাপন করেন তবে কোনও prepareForSegue:sender:পদ্ধতি বাস্তবায়ন না করেন তবে সেগুটি এখনও লক্ষ্য ভিউ নিয়ন্ত্রণকারীকে সিগ করবে। এটি তাত্পর্যপূর্ণ অপ্রত্যাশিত কন্ট্রোলারের সাথে যুক্ত হবে।

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


3

স্টোরিবোর্ডের সেগগুলি স্টোরিবোর্ডের বাইরে তৈরি করা উচিত নয়। ত্রুটি থাকা সত্ত্বেও আপনাকে এটিকে তারের প্রয়োজন হবে।

ইউআইএসটিবোর্ডসাগ রেফারেন্স পরিষ্কারভাবে বলে:

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

আপনি এখনও প্রোগ্রামিয়ালি স্টিগবোর্ডকে সেগ ব্যবহার করে presentModalViewController:বা pushViewController:animated:কলগুলি ব্যবহার করে একটি ভিউ কন্ট্রোলার উপস্থাপন করতে বলতে পারেন , তবে আপনার স্টোরিবোর্ডের উদাহরণ প্রয়োজন।

UIStoryboardপ্রধান বান্ডিলটির জন্য বান্ডেল শিলার সাথে একটি নামকৃত স্টোরিবোর্ডটি পেতে আপনি ক্লাস পদ্ধতিতে কল করতে পারেন ।

storyboardWithName:bundle:


2

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

1)। ক্লাস ফাইল এবং স্ট্যান্ডবোর্ড আইডি দিয়ে পরিচয় পরিদর্শকতে আপনার সমস্ত দর্শন সংজ্ঞায়িত করুন।

2)। নিশ্চিত হয়ে নিন যে আপনি প্রথম দর্শনে কোনও নেভিগেশন নিয়ন্ত্রক যুক্ত করেছেন। এটি স্টোরিবোর্ডে নির্বাচন করুন এবং তারপরে সম্পাদক> এম্বেড ইন> নেভিগেশন নিয়ন্ত্রক

3)। আপনার প্রথম শ্রেণিতে, "দ্বিতীয় শ্রেণি h.h" আমদানি করুন

#import "ViewController.h
#import "secondController.h"

4)। এই কমান্ডটি আইবিএक्शनটিতে যুক্ত করুন যা সিগ সম্পাদন করতে হবে

secondController *next=[self.storyboard instantiateViewControllerWithIdentifier:@"second"];
[self.navigationController pushViewController:next animated:YES];

5)। @"second"হ'ল সেকেন্ডভিউ কন্ট্রোলার ক্লাস, স্টোরিবোর্ড আইডি।


self.storyboardহওয়া উচিত:UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
মাসিপ্যাক্যাট

@মাসিপ্যাক্ট এবং স্টোরি বোর্ডের নাম আপনি কীভাবে আপনার এক্সকোড প্রকল্পটি সেট আপ করেছেন তার উপর নির্ভর করতে পারে, আমার মধ্যে এটি ছিল "মেইন.স্টরিবোর্ড" তাই আমি ব্যবহার করেছিstoryboardWithName:@"Main"
এ্যামিয়ানাস

@ সংকেত-চৌহান যদি আপনার প্রথম নিয়ামক কোনও নেভিগেশন কন্ট্রোলারে এম্বেড করা না থাকে তবে আপনি পরবর্তী [self showDetailViewController:next sender:self];[self showViewController:next sender:self];
ভিউটিও

1

আমি বিপরীতে ইঞ্জিনিয়ার হয়েছি এবং ইউআইএসটিরিবোর্ডের সেগগুলি একটি ওপেন সোর্স (পুনরায়) বাস্তবায়ন করেছি: https://github.com/acoomans/Segway

সেই লাইব্রেরির সাহায্যে আপনি সেগগুলি প্রোগ্রামিকভাবে সংজ্ঞায়িত করতে পারেন (কোনও স্টোরিবোর্ড ছাড়াই)।

আশা করি এটি সাহায্য করতে পারে।


0

বেশ কয়েকটি সমস্যা, আসলে:

প্রথমত, সেই প্রকল্পে আপনি আমাদের জন্য আপলোড করেছেন, সেগটি "সেগু 1" সনাক্তকারী বহন করে না:

কোন সনাক্তকারী

আপনার যদি ইতিমধ্যে সনাক্ত না করে থাকে তবে আপনাকে সেই পরিচয়কারী পূরণ করতে হবে।

দ্বিতীয়ত, আপনি টেবিল ভিউ থেকে টেবিল ভিউতে চাপ দিচ্ছেন, আপনি একটি ভিউ কন্ট্রোলার তৈরি করতে initWithNibName কল করছেন। আপনি সত্যই ইনস্ট্যান্টিয়েটভিউ কনট্রোলার উইথআইডেন্টিফায়ার ব্যবহার করতে চান।


0

এখানে কোড নমুনার জন্য Creating a segue programmatically:

class ViewController: UIViewController {
    ...
    // 1. Define the Segue
    private var commonSegue: UIStoryboardSegue!
    ...
    override func viewDidLoad() {
        ...
        // 2. Initialize the Segue
        self.commonSegue = UIStoryboardSegue(identifier: "CommonSegue", source: ..., destination: ...) {
            self.commonSegue.source.showDetailViewController(self.commonSegue.destination, sender: self)
        }
        ...
    }
    ...
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // 4. Prepare to perform the Segue
        if self.commonSegue == segue {
            ...
        }
        ...
    }
    ...
    func actionFunction() {
        // 3. Perform the Segue
        self.prepare(for: self.commonSegue, sender: self)
        self.commonSegue.perform()
    }
    ...
}

আপনি self.prepare(for: self.commonSegue, sender: self)আপনার ক্রিয়া পদ্ধতি থেকে কল করছেন । তারপর তুলনা করে লাভ কি if self.commonSegue == segue {...}মধ্যে prepare(for:sender)পদ্ধতি?
নায়েম

@ নায়ম: ইন prepare(for:sender:), আপনি এটি প্রদর্শিত হওয়ার আগে গন্তব্য দেখার নিয়ামকটি কনফিগার করতে পারেন। অবশ্যই আপনি এটি করতে পারেন actionFunction
jqgsninimo

@ নাইম: আমি যে কারণটি করছি তা হ'ল অন্যান্য বিভাগগুলি পরিচালনা করার সাথে সামঞ্জস্য থাকার চেষ্টা করা।
jqgsninimo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.