<ফার্স্টভিউ কনট্রোলার: 0x2a2c00> এর জন্য উপস্থিত উপস্থিতি রূপান্তর শুরু / শেষ করতে ভারসাম্যহীন কলগুলি


93

আমি যখন আমার অ্যাপটি অনুকরণ করি তখন আমার এই সমস্যাটি হয়, এটি কোনও ত্রুটি বা সতর্কবার্তা নয় তবে এটি আমার কনসোলটিতে উপস্থিত হয়, এর আগে কেউ কি কখনও অভিজ্ঞতা পেয়েছে?


আপনি কি ভিউ কন্ট্রোলারে কোনও ধরণের অ্যানিমেশন তৈরি করেন?

4
হ্যাঁ. আমার একটি প্রারম্ভিক অ্যানিমেশন রয়েছে যা চিত্রগুলিকে পৃথক করে স্লাইড করে, আমি এখন ফোনে কোড লোড করার সময় এই ত্রুটিটি কেবল তখনই লক্ষ্য করেছি।
সি। জনস

ত্রুটি বার্তাটি আপনাকে একটি রূপান্তর শুরু করার পরামর্শ দেয় তবে সংশ্লিষ্ট শেষ পদ্ধতিটিতে একটি অনুপস্থিত কল রয়েছে।

4
একই জিনিস পেয়েছি। এর কোন সমাধান?
seeafish

এছাড়াও এর সমাধান খুঁজছেন
বারফুন

উত্তর:


48

আমার ক্ষেত্রে, এই ত্রুটিটি ঘটে যখন আপনি খুব দ্রুত টেবিলভিউতে দুটি ট্যাব ক্লিক করেন।

ফলাফল ভুল শিরোনামের কারণ, পিছনে বোতাম অদৃশ্য। কেউ উল্লেখ করেছেন যে আপনি যখন কোনও দৃশ্যের দিকে ধাক্কা দেন set animated:NO,। ত্রুটিটি অদৃশ্য হয়ে যাবে তবে তবুও কিছু অদ্ভুত আচরণের কারণ হয়। এটি দুটি দর্শনকে ঠেলে দেয়, তারপরে আপনাকে টেবিলভিউ স্ক্রিনটি ফিরে পেতে দুবার ফিরে যেতে হবে।

এই সমস্যাটি সমাধান করার জন্য আমি যে পদ্ধতিটি চেষ্টা করেছি:

যোগ করুন BOOL cellSelected;

ভিতরে viewWillAppear cellSelected = YES;

didselectcell প্রতিনিধি মধ্যে if (cellSelected){cellSelected = NO; do action ; }

এটি খুব দ্রুত দুটি পৃথক কক্ষ ক্লিক করা রোধ করতে সহায়তা করে।


4
আমার অনুমান শব্দটির কিছু বোঝা শক্ত ছিল। আমি পঠনযোগ্যতা বাড়াতে কয়েকটি সম্পাদনা করেছি।
কাইল ক্লেগ

42

আমার ক্ষেত্রে এটি ঘটেছিল যখন আমি [self performSegueWithIdentifier:@"SomeIdentifier" sender:self];কোনও UINavigationControllerআইটেমের viewDidLoadপদ্ধতিতে ট্রিগার করেছিলাম ।

এটিকে viewDidAppearপদ্ধতিতে সরানো সমস্যার সমাধান করে।

খুব সম্ভবত কারণ হয় viewDidLoad সমস্ত অভিনব অ্যানিমেশন ইতিমধ্যে শেষ হয়ে গেছে, যেখানে viewDidAppearসমস্ত কিছু সম্পন্ন হয়েছে।


ধন্যবাদ আমি গুহামান যুগে নিজেকে হারিয়ে ফেলেছিলাম যেখানে আমি প্রতিটি ইউআই উপাদানটি থ্রো কোড তৈরি করছিলাম। স্টোরিবোর্ড স্টাফ আমার কাছে নতুন।
কিরণ কুলকারনী

21

আমারও এই সমস্যা আছে। আমি এই সমস্যার দুটি সমাধান পেয়েছি:

  1. আপনি এই সমাধানটি উপরে দেখতে পারেন।
  2. আমি সাবক্লাসটি পেয়েছি UINavigationControllerযেখানে থেকে এই সমস্যার সমাধান হয়েছে। বাফার্ড নেভিগেশন কন্ট্রোলার

15

এড়াতে আপনার কোডটি বিভিন্ন লুপে চালানো উচিত

 double delayInSeconds = 0.1;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
            // Put your code here
[self presentViewController:self.yourModalVC animated:YES completion:nil];
        });

7
একটি আরও ভাল ধারণা হ'ল উপস্থাপনকারী অ্যানিমেশনটি একটি dispatch_asyncমূল সারিটির অভ্যন্তরে আবদ্ধ করা । বিষয়টি dispatch_asyncহ'ল এটি প্রধান কাতারে সমস্ত অন্যান্য অ্যানিমেশন সম্পন্ন না হওয়া পর্যন্ত অপেক্ষা করে। এটি বিলম্ব ব্যবহারের চেয়ে অনেক ভাল কারণ: 1- দেরি যথেষ্ট কিনা তা আপনি কখনই জানতে পারবেন না এটি আপনার হোস্ট ডিভাইসের উপর নির্ভর করে 2- আপনি বিলম্বকে বেশি করে ফেলবেন এবং কিছুটা পিছিয়ে যাবে। এটি চেষ্টা করুন:dispatch_async(dispatch_get_main_queue(), ^{[self presentViewController:self.yourModalVC animated:YES completion:nil];});
এম। পোরোশানী

12

একই সমস্যা নিয়ে আমার প্রচুর সমস্যা ছিল। আমি এইভাবে এটি সমাধান

1) আপনি UIViewController'sমনোনীত আরম্ভকারী ব্যবহার করছেন না initWithNibName:bundle:। ন্যায়বিচারের পরিবর্তে এটি ব্যবহার করার চেষ্টা করুন init

2) animated:YESএকটি NO সেট করুন , এবং এটি সমস্যার সমাধান করে। যেমন[self.navigationController pushViewController: viewController_Obj animated:NO];


7

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


ধন্যবাদ! আমার যুক্তিটি ভিডিডে এড়িয়ে যাওয়া আমার পরিস্থিতিতে সহায়তা করেছে।
জারোস্লাভ

7

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

-(void)viewDidAppear
{
 [super viewDidDisappear];
 //some code staff
 ..
}

লক্ষ্য করুন যে উপস্থিত এবং অদৃশ্য পদ্ধতি মেলে না


এই সমস্যাটি ডিবাগ করতে সবে প্রায় দুই ঘন্টা ব্যয় করেছে এবং এটিই এটি পরিণত হয়েছিল। কলিং super.viewWillAppear()মধ্যে viewDidDisappear()
ড্যানিয়েল উড

এই টিপ জন্য ধন্যবাদ। এটি আমার একমাত্র সমস্যা ছিল না, তবে এটি সাহায্য করেছিল!
অ্যান্টনি সি

4

'ভারসাম্যহীন কলগুলির জন্য উপস্থিতির রূপান্তর শুরু / শেষ করতে হবে'

বলছেন শেষ সংক্রান্ত অ্যানিমেশনটি শেষ না হওয়ার আগে একটি অ্যানিমেশন শুরু হয়েছিল। সুতরাং, আপনি নতুনটিকে ধাক্কা দেওয়ার আগে কোনও ভিউ কন্ট্রোলারকে পপিং করছেন? বা শিকড় পপিং হতে পারে? যদি হ্যাঁ অ্যানিমেশন ছাড়া এটি করার চেষ্টা করুন[self.navigationController popToRootViewControllerAnimated:NO];

এবং দেখুন যে এটি সমস্যার সমাধান করে কিনা, আমার ক্ষেত্রে এটি কৌশলটি করেছে।


4
এটিই মূল কী: একই সাথে অন্যান্য ভিউকন্ট্রোলার স্থানান্তরগুলি পপ করুন বা পরিবর্তন করুন।
রকি

2

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

    - (UIViewController*)printInteractionControllerParentViewController:(UIPrintInteractionController*)printInteractionController;

2

আমার একইরকম সমস্যা ছিল যার মধ্যে মডেল ডায়ালগগুলি রিওয়াইন্ড করা জড়িত। সমাধান এখানে পোস্ট করেছেন ...

https://stackoverflow.com/a/38795258/324479

[সমস্যা]

ন্যাভ কন্ট্রোলার -> ভিসি 1 -পশ -> ভিসি 2 -পপওভার বা মডেল সেগু -> ভিসি 3।

ভিসি 3 ভিসি 1 এ অনিচ্ছাকৃত is

যখন ভিসি 2 থেকে ভিসি 3-তে সেগুটি পপওভার এবং মডেল হয়, আনইন্ডটি একটি সতর্কতার মধ্যে শেষ হয়: ইউআইভিউউকন্ট্রোলারের জন্য উপস্থিতি রূপান্তর শুরু / শেষ করতে ভারসাম্যহীন কলগুলি "

ভিসি থেকে ভিসি পর্যন্ত সেগু যদি চাপ দেয় তবে সতর্কতা চলে যায় is

[সমাধান]

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

ভিসি 2 এর জন্য আপনার কোডটি নিম্নরূপ হওয়া উচিত। (সুইফ্ট)

class VC2: UIViewController {
    private var unwind = false
    @IBAction func unwindToVC1(segue:UIStoryboardSegue) {
        unwind = true
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

        if unwind {
            self.navigationController?.popViewControllerAnimated(false)
        }
    }
}

1

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

-(void) viewDidAppear:(BOOL)animated {
    [self presentViewController:self.yourModalVC animated:YES completion:nil];
}

এটি মূলত বলছে যে ভিউ লাইফ চক্রটি সেই সময়ের জন্য আপনি প্রদর্শন করার চেষ্টা করছেন সেই দৃশ্যের জন্য নিয়ন্ত্রিত নয় C


1

চেষ্টা করার সময় আমারও একই সমস্যা রয়েছে:

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES];

মত একটি ফাংশন - (void) popUpToLevelTwo;, এবং return;ফাংশন শেষে একটি রাখা সমস্যা সমাধান করে


1

আমি এটি পেয়েছিলাম

[self dismissModalViewControllerAnimated:YES];

আমি পরিবর্তন YESএকটি থেকে NO, এবং যে সমস্যার সমাধান।


1

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


1

এটি মূল্যবান কিসের জন্য, [super viewDidLoad:animated]আমার viewDidLoadওভাররাইডে কোনও কল অন্তর্ভুক্ত না করার সময় আমি এই একই ত্রুটি পেয়েছি ।


4
আপনি সম্ভবত ভিউডিড অ্যাপের মানে? ভিউডিডোডের কোনও প্যারামিটার নেই
ফ্যাবিও নেপোডানো

1

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


ধন্যবাদ !! তুমি আমার সময় বাঁচাও !!
ভিডি

1

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

এটি একই কারণে UIViewControllerদু'বার চাপ UINavigationControllerদিয়েছে এবং এই সতর্কতা দিয়েছে।


1

কারণ বার্তা জন্য: এই বার্তাটি প্রদর্শিত পেতে থাকে এবং আপনি ঠেলে দিচ্ছেন শুধুমাত্র যদি / থেকে অন্য দেখুন নিয়ামক উপস্থাপন viewWillAppear, loadView, initবা viewDidLoadবর্তমান ভিউ নিয়ামক পদ্ধতি

ত্রুটি অপসারণের উপায় বার্তা: আপনার পুশিং / উপস্থাপনার কোডটি viewDidAppearপদ্ধতিতে সরিয়ে ফেললে সমস্যাটি সমাধান হবে


1

সুইফট 4

আমার সমস্যাটি ছিল আমার বর্তমানের রেন্ডারটি শেষ হওয়ার আগে আমি অন্য উপাচার্য উপস্থাপন করছিলাম।

সমাধানটি আমার দেরি ভিভি দ্রুত তাড়াতাড়ি উপস্থাপন করার ছিল।

আপনি কি করবেন না

override func viewDidLoad() {
    super.viewDidLoad() 
    self.present(MyNextVC(), animated: true, completion: nil)
}

আপনি কি করবেন?

override func viewDidLoad() {
    super.viewDidLoad() 
    //Wait until the view finished to be constructed
    perform(#selector(showMyNextVC), with: nil, afterDelay: 0.01)
}

@objc func showCityList() {
    self.present(MyNextVC(), animated: true, completion: nil)
}

4
বিলম্বটি ব্যবহার না করে আমি কোডটি ভিডিড অ্যাপ বা ভিউডিডলআউটসুভিউগুলিতে রেখে দেব।
প্রণব কাসেটি

0

আমি ব্রেক সেট করতে ভুলে গেলে আমার এই সমস্যা হয়েছিল; সুইচ স্টেটমেন্টে ভিউ ঠেলে!

এখানকার মত:

case 1:{

        SomeViewController *someViewController = [[SomeViewController alloc]initWithNibName:@"SomeViewController" bundle:Nil];
        [self.navigationController pushViewController:someViewController animated:YES];
        [someViewController release];
    }

        break; //Forgetting to set break here:

0

"নেভিগেট করার সময়" ত্রুটির "ভারসাম্যহীন কলগুলি শুরু / শেষ উপস্থিতির রূপান্তরণ" এর পিছনের কারণ | একই সময়ে দু'বার সিগ



0

আপনি যদি কোনও ইউআইভিউকন্ট্রোলারটিকে লোডিং শেষ করার আগে বরখাস্ত করার চেষ্টা করেন তবে আপনি এটির মধ্যে দৌড়াতে পারেন।

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

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


0

এটি আমার পক্ষে কঠিন ছিল: আমি ওভাররাইড করেছি

override func shouldAutomaticallyForwardRotationMethods() -> Bool {
    return true
}

ওভাররাইড ছাড়াই:

override func shouldAutomaticallyForwardAppearanceMethods() -> Bool {
    return true
}

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


0

আমার ক্ষেত্রে আমি অভ্যন্তরীণ 'পদ্ধতি NSDataথেকে আনছিলাম ।NSURLviewDidLoad

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