Не вдалося знайти розкадрування під назвою "Main" у наборі


86

Я отримую дивну помилку: 'Could not find a storyboard named 'Main' in bundle NSBundle'при спробі запустити програму на реальному пристрої iOS.

У мене є файл у моєму каталозі, і він добре працює в тренажері. Однак у цьому Copy Bundle Resourcesрозділі файл Main.storyboardчервоний.

Я спробував видалити його та додати ще раз, перезапустивши Xcode, очистивши збірку тощо без користі. Це попередження, яке я отримую в Xcode:

/Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard: Internationalization of /Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard is not available when compiling for targets before iOS 6.0

Я описав, як вирішити проблему в цій публікації: stackoverflow.com/a/21098195/1141395
Alex Cio

Ця проблема в основному виникає через пошкоджену установку програми. Рішення - очистити та побудувати проект. Також видаліть існуючу програму з пристрою / симулятора та запустіть знову.
Крішнабхадра

Користувачі Xcode 11 , прокрутіть вниз до stackoverflow.com/a/58452686 , можливо, це саме ваш випадок.
Cemen

Відповіді:


92

відкрийте info.plist вашого проекту та видаліть вибраний рядок, що відображається на знімку екранавведіть тут опис зображення

Якщо ви отримуєте чорний екран, переконайтеся, що ваш початковий розкадрування вибрано в якості основного інтерфейсу введіть тут опис зображення


24
Дякую, але це тільки що зробило мій запуск програми чорним екраном. Немає збоїв.
Carpetfizz

Переконайтеся, що у вашому додатку - (BOOL) є ці два рядки: (UIApplication *) додаток didFinishLaunchingWithOptions: (NSDictionary *) launchOptions ...: (1) self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] межі]]; (2) self.window.backgroundColor = [UIColor whiteColor];
Джоел Хансен,

@ Carpetfizz Додати '[self.window makeKeyAndVisible];' до вашого AppDelegate.
Альсерда,

4
"запуск програми з чорним екраном", ніхто про це не має уявлення?
Umit Kaya

@Umitk встановив фон як білий (view.backgroundColor = .white) або будь-який інший колір, який вам подобається
Stephane

59

Ви можете перевірити цільове членство в раскадровці. Проблема може бути там:

Це повинно виглядати так:

Цільове членство


У мене була та сама проблема, і спочатку я думав, що не копіюю потрібні ресурси в ціль, але виправлення цільового членства вирішило проблему.
pyj

2
Дякую, працювали! Я зробив Clean, Rename File, Update Plist без жодної радості. Завжди найочевидніше, що вас вражає.
Джим Гелдерман

Привіт, у мене така сама проблема, але вікно цільового членства не відображається, Xcode 7. Будь ласка, допоможіть
DrPatience

З якоїсь причини мою ціль не вибрали .. Дякую за цю відповідь .. Вирішено !!
Ümañg ßürmån

58

Для тих, хто стикається з цією проблемою в Xcode 11, ось як це можна виправити, якщо стикаєтесь із цією проблемою, коли не виконуєте налаштування проекту за допомогою розкадровки

(Додавання деяких частин, які Рікардоперейра пропустив)

1) Спочатку видаліть файл Main.storyboard

2) Далі перейдіть до PROJECT_NAME -> ЗАГАЛЬНЕ

У спадному меню основного інтерфейсу видаліть текст Main

видалення посилання на main із загальних налаштувань

3) Тепер перейдіть до info.plist і видаліть ім'я Раскадровки

видалення посилання на розкадрування з info.plist

4) Нарешті, змініть код сцени (_: willConnectTo: options) у файлі SceneDelegate.swift (Так! Це вже не в App Delegate.)

var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(frame: windowScene.coordinateSpace.bounds)
        window?.windowScene = windowScene
        window?.rootViewController = ViewController()
        window?.makeKeyAndVisible()
    }

Ви можете також звернутися до цього відео замість цього: https://www.youtube.com/watch?v=Htn4h51BQsk


3
Ваша відповідь майже правильна, лише є невелика зміна у функції сцени: guard let _ = (scene as? UIWindowScene) else { return } let viewController = ViewController() if let windowScene = scene as? UIWindowScene { self.window = UIWindow(windowScene: windowScene) self.window?.rootViewController = viewController self.window?.makeKeyAndVisible() }
Реза Дехнаві

3
Щоб підкреслити, запис info.plist - це не просто звичайний основний запис розкадровки, а ТАКЖЕ той, що є в маніфесті сцени програми, який є новим для iOS 13. Мені довелося двічі прочитати, перш ніж я зрозумів.
jboulter11

Це правильний спосіб робити це зараз! ^^ Apple продовжувала змінювати речі.
Ючен Чжун

36

Оновлення для програм, створених для iOS 13.0 і новіших версій. (Xcode 11)

Якщо ви отримуєте повідомлення про помилку "Не вдалося знайти розкадрування з назвою" Основне "у наборі, навіть після зміни" Основне ім'я файлу розкадровки "у списку info.plist та" Основний інтерфейс "у розділі Розгортання в Цільовому.

Потім вам доведеться змінити інший запис у файлі info.plist.

  1. Відкрийте файл info.plist.
  2. Розгорніть "Маніфест сцени додатка".
  3. Розгорніть «Конфігурація сцени».
  4. Розгорніть елемент 0 у розділі «Роль сеансів програми», а потім змініть там назву розкадрування.

введіть тут опис зображення

І ваша програма почне працювати.


1
Це абсолютно правильна відповідь. Мабуть, вже недостатньо встановити основну розкадровку зі спадного меню Загальне> Основний інтерфейс.
NRitH

1
Дякую за це. Видалення ключа "Маніфест сцени програми" (разом із усіма його підключами) вирішило проблему для мене.
Грег Браун

1
Я буквально не знаю, що сталося, але це працює
Баванта,

1
Ти врятував мені життя :)
Юсуф Каміль АК

17

У проекті, який використовується UISceneв iOS 13 та Xcode 11, вам потрібно видалити UISceneStoryboardFileключ із .plist.

Xcode 11:

xcode11-непристойний

Перехід безпосередньо з файлу:

уїсцено-пліст


15

Я видалив програму зі свого телефону, зробив Продукт -> Очистити і завантажив її знову. Це все, що мені потрібно.


за кожне виконання, якщо видаляє, то лише його виконання ... будь ласка, допоможіть мені в xcode 10.1
Аруна М

12

Я отримав цю помилку, однак я мав намір повністю видалити розкадровки.

Видалення ключа "Основна назва файлу розкадровки" зі свого списку вилікувало помилку.


10

Не вдалося знайти розкадрування під назвою "Main" у наборі

Причина, про яку я міг подумати:

Наскільки мої знання про iOS прийшли до висновку, це просто сталося, тому що XCode не зміг знайти посилання на файл Main.storyboard в каталозі мого проекту, щоб скопіювати його в додаток.

Дозвіл:

  1. Вибрав файл Main.storyboard і спробував його видалити, а з діалогового вікна, що спливає, виглядає наступним чином: введіть тут опис зображення

  2. Натиснув кнопку "Видалити посилання".

  3. Потім, з фактичного місця, де я міг знайти файл Main.storyboard в каталозі проекту, перетягнув і опустив до XCode, і знову з діалогового вікна, що спливає наступним чином: введіть тут опис зображення

  4. Я вибрав "Створити посилання на папки" (оскільки це одне, що я мав намір зробити, оскільки змінив структуру файлів та папок свого проекту). Але більшість випадків вибір "Створити групи" також може спрацювати. І натиснув на кнопку "Готово". Мої файли Storyboard вже були в межах, як показано на скріншоті, вже в Base.lprojкаталозі, як показано нижче:

    введіть тут опис зображення

    Примітка. Одне важливе, що слід нагадати тут на цьому кроці, - не забудьте встановити його в прапорець "Додати до цілей" у своєму додатку.

  5. Очистіть Продукт, відновіть його, і якщо він буде успішним, більшість часу спробуйте його запустити.

Сподіваюся, це може бути корисним для когось іншого! Я спробував це на XCode 7.3.1 та на iOS Sim 9.3 та iPhone 6S!


Будь ласка, допоможіть цьому також зіткнутися з цією проблемою після встановлення os10.14.1 та xc0de 10.1..am, які намагаються вирішити через 3 дні, але все ж .. мій проект працює добре в xcode9.1 ..
Aruna M

@ArunaM Чи спробували ви описані вище кроки, які я дав у відповіді? Яким був статус після цього?
Рандіка Вішман,

1
Це було рішення, коли я видалив ViewController з проекту, який спричинив ту саму помилку!
Сларті Бартфаст

8

Виконайте кроки:

1) Спочатку клацніть на своїй дошці

2) Потім натисніть File Inspector

3) Потім виберіть "Цільове членство"

Знімок екрану


6

Симулятор не чутливий до регістру, але пристрій це робить. Якщо ваша розкадровка називається MainStoryboard, а не MainStoryBoard, це спричинить вашу проблему. а також * не використовуйте розширення, пишіть лише ім'я дошки

main.storyboard -> лише main - це назва розкадрування


6

Swift 5.1 & xCode 11.2

У моєму випадку, я забув змінити Storyboard NameвInfo.plist

введіть тут опис зображення

Info.plist вихідний код

    <dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <false/>
        <key>UISceneConfigurations</key>
        <dict>
            <key>UIWindowSceneSessionRoleApplication</key>
            <array>
                <dict>
                    <key>UISceneConfigurationName</key>
                    <string>Default Configuration</string>
                    <key>UISceneDelegateClassName</key>
                    <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
                    <key>UISceneStoryboardFile</key>
                    <string>AccountViewController</string>
                </dict>
            </array>
        </dict>
    </dict>

4
  1. Відкрийте файл розкадровки
  2. Потім натисніть File Inspector
  3. Потім виберіть «Цільове членство» та перевірте свій проект
  4. Зробіть те саме для файлу ViewController !!! важлива частина, якщо ви використовуєте ViewController.swift або ViewController.m зі своєю розкадровкою !!!

3

Ця помилка виникає під час відновлення файлу main.storyboard зі сміття після видалення файлу. Я також зіткнувся з тим же питанням учора.

Ви повинні встановити шлях до розташування main.storyboard як відносний до групи в інспекторі файлів main.storyboard. Після цього в тому ж атрибуті ви повинні застрахувати галочку на цілі вашого додатка (як ви можете бачити на вкладеному малюнку).

введіть тут опис зображення


2

Два різні рішення, які працювали у мене після оновлення до Xcode 10.1:

  • У меню Файл-> Налаштування робочої області (або проекту) . Перейдіть на застарілу систему побудови .

  • У ваших цілях Будівництва фаз , видаліть Base.lproj папку Копіювання Bundle ресурсів (якщо вказано) і переконайтеся , що кожен з вашої розкадровки перераховані і копіюється окремо замість цього.

Застосувавши будь-яке з наведених вище виправлень, переконайтеся, що ви один раз очистили папку побудови в меню Продукт, інакше виправлення можуть не працювати належним чином.


1

Видалення рядка в plist також спричинило чорний екран у моїй програмі. І я виправив це, дозволивши цільове членство в раскадровці


1

Як сказав Калпіт Гаджера, "відкрийте info.plist вашого проекту і видаліть вибраний рядок, що відображається на скріншоті". Ви просто видаляєте "Основне ім'я файлу основної розкадровки" зі списку Info.pl. Після його видалення, очищення та запуску програма більше не вийде з ладу, але відобразить чорний екран. Знову відкрийте Info.plist і вручну додайте рядок назад. Проблему вирішено.


0

виберіть main.storyboard, змініть вигляд як iOS 6.1 і раніше, тоді xcode скаже вам, що вам потрібно зробити.

введіть тут опис зображення


0

Моє рішення:

Коли я додав послідовне з'єднання між двома поданнями та в конфігурації Projekt, ціль розгортання менше 8,0, я отримую цю помилку.

добре, легко зрозуміти, коли ви розробляєте для IOS 6.0 (наприклад), ви не можете використовувати Seque, тому що Seque потребує IOS 8.0 або пізнішої версії ...

отже, я встановив для цілі розгортання значення 8,0, і помилка зникла !!!! в інший час я скасовую всі з'єднання Segue і обробляю це за допомогою IBAction, стара школа ;-)


0

Я переміщував файл Main.Storyboard у "синю" підпапку, яка викликала проблеми, мені довелося додати підпапки, дотримуючись цих інструкцій Xcode 6.3 Новий випуск файлу

потім переміщення файлу Main.Storyboard в жовту підпапку справді спрацювало для мене


0

Мою проблему було вирішено видаленням .xmlсуфікса з Main.storyboard.xml file.

Очевидно, суфікс змінився від версії, з якої я імпортував проект.

Отже, перейменувавши файл (видаливши .xmlсуфікс) і перезапустивши, потім Project-> clean....вирішено проблему.


0

Якщо у вас все ще є чорний екран, спробуйте додати нижче код в делегат сцени

willConnectTo

    guard let windowScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(frame: windowScene.coordinateSpace.bounds)
    window?.windowScene = windowScene
    let navController = UINavigationController()
    let mainstoryboard:UIStoryboard = UIStoryboard(name: "Your storyboard name", bundle: nil)
    let initialController = mainstoryboard.instantiateViewController(withIdentifier: "your initial controller Identifier") as! initialController
    navController.addChild(initialController)
    window?.rootViewController = navController
    window?.makeKeyAndVisible()

0

Якщо ваша розкадровка додана до проекту (що ви визначите з розділу Інспектор файлів проекту в області утиліти xcode)Прапорець позначений у цільовій області членства

Вам просто потрібно видалити Main.Storyboardз "Копіювати пакетний ресурс" (у Build Phase) і знову додати його в "Копіювати ресурсний пакет". Це працювало для мене.введіть тут опис зображення


-1

Гаразд, це був процес. Спробувати так багато різних речей. Запуск xcode 6.4 в ОС 10.11. Виникає проблема неможливо знайти "Основну". Що я, нарешті, зробив, це перемістив main.storyboard на занадто моєму робочому столі з Finder. Зробив чистий і побудував і вийшов з xcode. перезапущений xcode тепер він має червону основну таблицю. я запускаю це практично робить те саме. потім я клацну правою кнопкою миші на папці проекту та вибираю опцію додати файли до ... Перегляньте, де вона є, і відкрийте її. тоді, коли справа буде інспектор, що посвідчує особу. клацніть на невелику папку, що знаходиться під розташуванням. перейдіть до цієї папки ще раз і виберіть вибрати. Потім я побіг, і це спрацювало. Амінь !!!


-1

Виберіть контролер перегляду, який ви хочете спершу відобразити у списку ліворуч на розкадровці, потім у інспекторі атрибутів переконайтеся, що його заголовок - «Основний» та встановлено прапорець «Є початковий контролер перегляду».

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.