টিএল; ডিআর আপনার কাছে কেবল 1 টি রুটভিউ কনট্রোলার থাকতে পারে এবং এটি সর্বাধিক উপস্থাপিত। সুতরাং যখন ভিউ কনট্রোলারটি অন্য ভিউকন্ট্রোলারটিকে উপস্থাপন করার চেষ্টা করবেন না যখন এটি ইতিমধ্যে বরখাস্ত করা হয়নি।
আমার নিজের কিছু পরীক্ষা করার পরে আমি একটি সিদ্ধান্তে পৌঁছেছি।
যদি আপনার কাছে এমন একটি রুটভিউ কনট্রোলার থাকে যা আপনি সবকিছু উপস্থাপন করতে চান তবে আপনি এই সমস্যায় পড়তে পারেন।
এখানে আমার রুট কনট্রোলার কোডটি (মূল থেকে ভিউকন্ট্রোলার উপস্থাপনের জন্য আমার শর্টকাটটি উন্মুক্ত) is
func open(controller:UIViewController)
{
if (Context.ROOTWINDOW.rootViewController == nil)
{
Context.ROOTWINDOW.rootViewController = ROOT_VIEW_CONTROLLER
Context.ROOTWINDOW.makeKeyAndVisible()
}
ROOT_VIEW_CONTROLLER.presentViewController(controller, animated: true, completion: {})
}
আমি যদি একটানা দু'বার ওপেন কল করি (সময় কেটে যায় নির্বিশেষে), এটি প্রথম উন্মুক্তটিতে ঠিক কাজ করবে, তবে দ্বিতীয় খোলায় নয়। দ্বিতীয় উন্মুক্ত প্রয়াসের ফলে উপরের ত্রুটি হবে।
তবে আমি যদি সর্বাধিক উপস্থাপিত ভিউটি বন্ধ করি তবে কলটি ওপেন করুন, আমি যখন আবার ওপেন কল করব তখন এটি ঠিক ঠিক কাজ করে (অন্য দর্শকের নিয়ন্ত্রণকারী)।
func close(controller:UIViewController)
{
ROOT_VIEW_CONTROLLER.dismissViewControllerAnimated(true, completion: nil)
}
আমি যে সিদ্ধান্তে পৌঁছেছি তা হ'ল কেবলমাত্র অতি-সাম্প্রতিক-কলটির রুটভিউ কনট্রোলারটি হায়ারার্কি ভিউতে থাকে (আপনি এটিকে বাতিল করে দেন বা কোনও দৃশ্য সরিয়ে না নিলেও)। আমি সমস্ত লোডার কল (ভিডিডলিড, ভিউডিডঅ্যাপিয়ার এবং বিলম্বিত প্রেরণ কলগুলি) নিয়ে খেলার চেষ্টা করেছি এবং আমি পেয়েছি যে আমি এটির কাজ করতে পারার একমাত্র উপায় শীর্ষস্থানীয় দেখা নিয়ন্ত্রকের কেবলমাত্র উপস্থিত কলিং।
presentViewController:animated:completion
নেভ নিয়ন্ত্রণকারীকে কল করার চেষ্টা করা বাদ দিয়ে আমার ঠিক একই সমস্যা হচ্ছে । আপনি কি অ্যাপের প্রতিনিধিটিতে এটি করছেন?