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


89

চলমান ফাংশন পরে

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

একটি ক্রাশ আছে:

 Assertion failure in 
-[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-

 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', `enter code here`reason: 'Application windows are expected to have a root view controller at the end of application launch'
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000109377885 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000108df0df1 objc_exception_throw + 48
    2   CoreFoundation                      0x00000001093776ea +[NSException raise:format:arguments:] + 106
    3   Foundation                          0x0000000108a42bb1 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198
    4   UIKit                               0x000000010760e350 -[UIApplication _runWithMainScene:transitionContext:completion:] + 2875
    5   UIKit                               0x000000010760b73f -[UIApplication workspaceDidEndTransaction:] + 188
    6   FrontBoardServices                  0x000000010b87fd7b FrontBoardServices + 163195
    7   FrontBoardServices                  0x000000010b880118 FrontBoardServices + 164120
    8   CoreFoundation                      0x00000001092a20f1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    9   CoreFoundation                      0x0000000109297eac __CFRunLoopDoSources0 + 556
    10  CoreFoundation                      0x0000000109297363 __CFRunLoopRun + 867
    11  CoreFoundation                      0x0000000109296d78 CFRunLoopRunSpecific + 488
    12  UIKit                               0x000000010760b091 -[UIApplication _run] + 402
    13  UIKit                               0x000000010760f79b UIApplicationMain + 171
    14  bbwc                                0x00000001037a9998 main + 344
    15  libdyld.dylib                       0x000000010a45ca05 libdyld.dylib + 10757
    16  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

এই প্রকল্পটি একটি পুরানো প্রকল্প, এটি এক্সকোড 7 এবং আইওএস 9 দিয়ে তৈরি এবং চালানোর জন্য আমার কী করা উচিত?


যেহেতু এক্সকোড a একটি বিটা, আপনার কোনও গুরুতর উন্নয়ন কাজের জন্য সম্ভবত এক্সকোড to এ ফিরে যাওয়া উচিত।
পল আর


হ্যালো আমি এই ইওরটি পাচ্ছি: - *** দৃser়তা ব্যর্থতা - [ইউআইএপ্লিকেশন _রুনউইথমাইনসিন: ট্রানজিশন কনটেক্সট: সমাপ্তি:], / বিল্ডরুট / লাইব্রেরি / ক্যাচস / কম.এপল.এক্সবিএস / উত্স / ইউআইকিট_সিম / ইউআইকিট ৩50০৫.১6 / ইউআইপিপ্লিকেশন.এম: 3294 কীভাবে এটি সমাধান করবেন
আকাশ রাঘনি

উত্তর:


175

আপনার ত্রুটি বার্তা থেকে:

অ্যাপ্লিকেশন লঞ্চের শেষে অ্যাপ্লিকেশন উইন্ডোগুলির কাছে একটি রুট ভিউ নিয়ন্ত্রণকারী থাকবে

এই "পুরানো" প্রকল্পটির বয়স কত? যদি এটি কয়েক বছরেরও বেশি সময় থাকে, তবে আপনার কাছে এখনও রয়েছে:

[window addSubview:viewController.view];

পরিবর্তে এটির সাথে এটি প্রতিস্থাপন করা উচিত:

[window setRootViewController:viewController];

4
আমার একই সমস্যা রয়েছে এবং আমি মনে করি এটি একটি আইওএস 9 ইস্যু। আমার প্রকল্পটি আইওএস 7 এবং 8 এ কাজ করে some কিছু কারণে স্টোরিবোর্ডের দৃশ্যটি সঠিকভাবে সেট করা হয়নি।
ডেভিড স্নাবেল-কাউন্ট

4
আপনাকে অনেক ধন্যবাদ . উত্তরটি ত্রুটি বার্তায় রয়েছে: "অ্যাপ্লিকেশন উইন্ডোজ" আমার প্রকল্পে দুটি উইন্ডো রয়েছে বলে মনে করি, একটি সাধারণ উইডো, অন্যটি তৃতীয় পক্ষের মডিউল নামে পরিচিত
অ্যান্ড্রু ওয়াং

4
এমটিএসটিটাসবারোভারলে এবং এতে কোনও রুটভিউ কনট্রোলার নেই, আইওএস 9 এর সমস্ত উইন্ডোতে অবশ্যই একটি রুটভিউকন্ট্রোলার থাকতে হবে।
অ্যান্ড্রু ওয়াং

4
হ্যাঁ, আমি একই সমস্যাটি পেয়েছি, শেষ পর্যন্ত। আমার অ্যাপ্লিকেশনটিতে একটি অতিরিক্ত উইন্ডো রয়েছে যার রুট ভিউ নিয়ামক নেই।
ডেভিড স্নাবেল-কাউন্ট

4
আমি সমাধান যারা আমার জন্য কাজ করে পাওয়া করেছি: stackoverflow.com/a/32719949/1881895
barrast

37

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

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

NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow *window in windows) {
    NSLog(@"window: %@",window.description);
    if(window.rootViewController == nil){
        UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
        window.rootViewController = vc;
    }
}

আপডেট: দৃশ্যত স্থিতি দণ্ডকে উত্সর্গীকৃত একটি উইন্ডো রয়েছে যা সাধারণত এই সমস্যার কারণ হয়ে থাকে। উপরের কোডে এই ত্রুটিটি ঠিক করা উচিত।


4
ধন্যবাদ !! এটি আমার জন্য ইস্যুতে পরিণত হয়েছিল। আমি প্রধান দৃশ্যের নিয়ামক সেট করেছিলাম, তবে অ্যাপটির একটি দ্বিতীয় উইন্ডো ছিল যা সম্পর্কে আমি অজানা।
n13

এত শক্ত ... আমি কোনও ছদ্মবেশী নই এবং এটি আইওএস 9.1 চলমান এক্সকোড 7.1 আপডেট করার সময় আমাকে পেয়েছে ... স্ট্যাটাস বারটিতে একটি উইন্ডো উত্সর্গীকৃত ... অবশ্যই আছে এটি !? আমি যদি স্ট্যাটাস বারটি লুকিয়ে রাখি তবে কারও কাছে এটির অর্থ।
কেন

বাহ আমার 12 টির মধ্যে 2 টি অ্যাপ পর্যালোচনার জন্য ক্র্যাশ করছে এবং এটি এটি ঠিক করেছে বলে মনে হচ্ছে।
অ্যান্ড্রু স্মিথ

দুর্দান্ত কাজ করেছে !! ভালোবাসা পেয়েছে "স্পষ্টতই একটি স্থিতি দণ্ডকে উত্সর্গীকৃত একটি উইন্ডো রয়েছে যা সাধারণত এই সমস্যার কারণ হয়ে থাকে" "দেখেনি coming আসছে।
eGanges

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

21

XCODE 7 এর জন্য সমস্ত উইন্ডোজের অবশ্যই একটি রুটভিউ কনট্রোলার থাকতে হবে আপনি সহজেই ব্যবহার করতে পারেন:

UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
self.window.rootViewController = vc;

আপনার যদি কেবলমাত্র ইউআই উইন্ডো ব্যবহার করতে হয় (কোনও টিউটোরিয়াল থেকে সহজ উদাহরণের জন্য - এক্সকোড 7 এর আগে) এটি দুর্দান্ত কাজ করছে!


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

ধন্যবাদ, এটি আমার আইওএস ~ 3–8 সতর্কতা => আইওএস 9 ক্র্যাশ এড়িয়ে গেছে, তবে একটি ফাঁস সম্পর্কে স্ট্যাটিক বিশ্লেষককে সতর্ক করেছে। সুতরাং আমি অ্যাপ্লিকেশনডফিনিশলঞ্চিংয়ের ক্ষেত্রে অ্যাসাইনমেন্টটি দিয়ে শিরোনামের ইন্টারফেসে ঘোষণাটি সরিয়ে নিয়েছি। তারপরে আমি ডিলোকের সাথে [ভিসি রিলিজ] যুক্ত করেছি।
ফ্ল্যাশ শেরিডান

13

মনে হচ্ছে কোন আইওএস 9.1 (?) বা Xcode 7.1 থেকে যে UIWindowসময় instantiated application(_:didFinishLaunchingWithOptions:)একটি থাকতে হবে rootViewControllerযে পদ্ধতি ছাড়ার আগে সেট।

পূর্বে কেবলমাত্র মূল উইন্ডোটিতে rootViewControllerসেই পদ্ধতির সময় সেট থাকা যথেষ্ট ছিল । এখন যে কোনও UIWindowউদাহরণের একটি বৈধ rootViewControllerসম্পত্তি থাকা দরকার।

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

দ্রষ্টব্য : আপনি যদি rootViewControlerআপনার মূল উইন্ডোটিতে সেট না করেন বা আপনার স্টোরিবোর্ডটি সঠিকভাবে সেট আপ না করা হয় তবে আপনিও একই ত্রুটি পাবেন। এগুলি সাইড নোট হিসাবে উল্লেখ করা যেহেতু এই কেসগুলি বেশ সুস্পষ্ট এবং সংশোধন করার জন্য সোজা ward


আপনি উজ্জ্বল: ডি,
থ্যাঙ্কস

3

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

IOS9 উপর সেই অ্যাপ্লিকেশানটি এখনও AppStore থেকে ডাউনলোড, কিন্তু জরিমানা রান না সদ্য Xcode 7 নির্মিত কখন এবং সময় অ্যাপ্লিকেশন প্রতিনিধি তার applicationDidBecomeActive নির্বাহ এ আইওএস 9. চালানো: পদ্ধতি রুট দৃশ্য নিয়ামক এখন না লোড, এটি হিসাবে আগে হত! এটি আমার পুনরুদ্ধার রাষ্ট্রীয় কোডটিতে রুট ভিউ নিয়ন্ত্রণকারীকে কলটি মিস করেছে।

আমি কোডে নিজে নিজেই রুট ভিউ কন্ট্রোলারটি ইনস্ট্যান্ট করে এবং স্পষ্টভাবে ভিডিডলড থেকে এর স্থিতি পুনরুদ্ধার করে এটি ঠিক করেছি।


2

আপনার অ্যাপ্লিকেশনটিতে প্রতিটি উইন্ডোর রুটভিউ নিয়ন্ত্রণকারী সম্পত্তি সেট করা উচিত


আপনার উত্তর আমাকে সাহায্য করেছে
আজানিক্স

2

আমার একটি পুরানো প্রকল্প রয়েছে যা আইওএস 8 এ কাজ করেছে তবে আইওএস 9 নয় your যদি আপনার মূল ইন্টারফেসটি মেইনওয়াইন্ডো.এক্সিবতে সেট করা থাকে তবে এটি স্টোরিবোর্ডে আপডেট করুন। এটি আমার জন্য এটি স্থির করে:

  1. একটি নতুন প্রকল্প তৈরি করুন, সিঙ্গল ভিউ অ্যাপ্লিকেশন ঠিক আছে।
  2. আপনার প্রকল্পে মেইন.স্টরিবোর্ড ফাইলটি অনুলিপি করুন বা আপনি কেবল নিজের তৈরি করতে পারেন।
  3. আপনার প্রজেক্টের সেটিংস খুলুন এবং আপনার মেইন ইন্টারফেসটি মেইন.স্টোরিবোর্ডে সেট করুন আপনার মেইন ইন্টারফেসটি মেইনস্টোরিবোর্ডে সেট করুন

1

আপনার রুটভিউ কনট্রোলারটি কেবলমাত্র নেভিগেশনকন্ট্রোলারে সেট করুন যা নীচের আমার কোডটির মতো অ্যাপ্লিকেশন-প্রতিনিধি.আরবিতে আপনার ইউআইভিউউকন্ট্রোলার। আমি রুবিতে নতুন কিন্তু আশা করি এটি সাহায্য করেছে ...

rootViewController = UIViewController.alloc.init

@window.rootViewController = navigationController

1

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

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Application windows are expected to have a root view controller at the end of application launch'

আমি আরও তদন্তের পরে যা আবিষ্কার করেছি যে ক্র্যাশটি কিছু ভিউ লজিক (এসভিপ্রোগ্রেসহড) ডেকে আনা হওয়ার কারণে ঘটছে - (void)applicationDidBecomeActive:(UIApplication *)application। এটি Xcode7 এ নতুন আচরণ বলে মনে হচ্ছে তবে যতদূর আমি বলতে পারি এসভিপ্রোগ্রেসহড স্টোরিবোর্ড দ্বারা সেট করার আগে রুটভিউ নিয়ন্ত্রণকারীকে উল্লেখ করেছিল। শেষ পর্যন্ত SVProgressHud 2.0 তে আপডেট করে বাগটি ঠিক করা হয়েছে upd


0

সুইফট 2 সমাধানটি আমার পক্ষে কাজ করেছে:

AppDelegate -> didFinishLaunchingWithOptions- এ নীচে কোডটি সন্নিবেশ করুন

self.window!.rootViewController = storyboard.instantiateViewControllerWithIdentifier("YourRootViewController") as? YourRootViewControllerClass

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