ไม่พบสตอรีบอร์ดชื่อ "หลัก" ในชุดรวม


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

ปัญหานี้ส่วนใหญ่เกิดขึ้นเนื่องจากการติดตั้งแอปเสียหาย วิธีแก้ไขคือทำความสะอาดและสร้างโครงการ ลบแอพที่มีอยู่ออกจากอุปกรณ์ / โปรแกรมจำลองและเรียกใช้อีกครั้ง
Krishnabhadra

ผู้ใช้Xcode 11ให้เลื่อนลงไปที่stackoverflow.com/a/58452686อาจเป็นกรณีของคุณ
Cemen

คำตอบ:


93

เปิด info.plist ของโครงการของคุณและลบแถวที่เลือกที่แสดงในภาพหน้าจอป้อนคำอธิบายภาพที่นี่

หากคุณได้รับหน้าจอสีดำให้แน่ใจว่ากระดานเรื่องราวเริ่มต้นใหม่ของคุณถูกเลือกเป็นอินเทอร์เฟซหลักของคุณ ป้อนคำอธิบายภาพที่นี่


24
ขอบคุณ แต่นี่ทำให้แอปของฉันเปิดตัวด้วยหน้าจอสีดำ ไม่มีข้อขัดข้อง
Carpetfizz

ตรวจสอบให้แน่ใจว่ามีสองบรรทัดนี้ในแอปพลิเคชัน - (BOOL) ของคุณ: (UIApplication *) แอปพลิเคชัน didFinishLaunchingWithOptions: (NSDictionary *) launchOptions ... : (1) self.window = [[UIWindow จัดสรร] initWithFrame: [[UIScreen mainScreen] ขอบเขต]]; (2) self.window.backgroundColor = [UIColor whiteColor];
Joel Hansen

@ Carpetfizz เพิ่ม '[self.window makeKeyAndVisible];' ไปยัง AppDelegate ของคุณ
Alserda

4
"เปิดตัวแอปด้วยหน้าจอสีดำ" ไม่มีใครคิดเรื่องนี้ใช่หรือไม่?
Umit Kaya

@Umitk ตั้งค่าพื้นหลังเป็นสีขาว (view.backgroundColor = .white) หรือสีอื่น ๆ ที่คุณชอบ
Stephane Paquet

64

สำหรับใครก็ตามที่ประสบปัญหานี้ใน Xcode 11 ต่อไปนี้เป็นวิธีแก้ไขหากคุณประสบปัญหานี้เมื่อทำการตั้งค่าโครงเรื่องน้อยลง

(เพิ่มบางส่วนที่ricardopereiraพลาด)

1) ขั้นแรกให้ลบไฟล์ Main.storyboard

2) จากนั้นไปที่PROJECT_NAME -> GENERAL

ในเมนูแบบเลื่อนลงของอินเทอร์เฟซหลักให้ลบข้อความหลัก

ลบการอ้างอิงถึง main ออกจากการตั้งค่าทั่วไป

3) ไปที่ info.plist และลบStoryboard Name

ลบการอ้างอิงไปยังสตอรีบอร์ดจาก 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() }
Reza Dehnavi

3
เพื่อเพิ่มความสำคัญรายการ info.plist ไม่ได้เป็นเพียงรายการกระดานเรื่องราวหลักตามปกติ แต่ยังเป็นรายการในรายการฉากแอปพลิเคชันซึ่งใหม่สำหรับ iOS 13 ฉันต้องอ่านสองครั้งก่อนที่จะรู้
jboulter11

นี่คือวิธีที่ถูกต้องในการทำสิ่งต่างๆในตอนนี้! ^^ Apple ยังคงเปลี่ยนแปลงสิ่งต่างๆ
Yuchen Zhong

59

คุณสามารถตรวจสอบการเป็นสมาชิกเป้าหมายของกระดานเรื่องราว อาจมีปัญหาคือ:

ควรมีลักษณะดังนี้:

การเป็นสมาชิกเป้าหมาย


ฉันมีปัญหาเดียวกันและตอนแรกฉันคิดว่าฉันไม่ได้คัดลอกทรัพยากรที่ถูกต้องไปยังเป้าหมาย แต่การแก้ไขการเป็นสมาชิกเป้าหมายช่วยแก้ไขปัญหา
pyj

2
ขอบคุณทำงาน! ฉันทำความสะอาดเปลี่ยนชื่อไฟล์อัปเดต Plist โดยไม่มีความสุข สิ่งที่ชัดเจนที่สุดที่ทำให้คุณได้รับ
Jim Geldermann

สวัสดีฉันมีปัญหาเดียวกัน แต่หน้าต่างการเป็นสมาชิกเป้าหมายไม่แสดง Xcode 7 โปรดช่วยด้วย
DrPatience

ด้วยเหตุผลบางประการฉันไม่ได้เลือกเป้าหมาย .. ขอบคุณสำหรับคำตอบนี้ .. แก้ไขแล้ว !!
Ümañgßürmån

39

การอัปเดตสำหรับแอปพลิเคชันที่สร้างขึ้นสำหรับ iOS 13.0 ขึ้นไป (Xcode 11)

หากคุณได้รับข้อผิดพลาด "ไม่พบสตอรีบอร์ดชื่อ" หลัก "ในบันเดิลแม้ว่าจะเปลี่ยน" ชื่อฐานของไฟล์สตอรีบอร์ดหลัก "ใน info.plist และ" อินเทอร์เฟซหลัก "ภายใต้การทำให้ใช้งานได้ในเป้าหมาย

จากนั้นคุณต้องเปลี่ยนรายการอื่นในไฟล์ info.plist

  1. เปิดไฟล์ info.plist
  2. ขยาย "Application Scene Manifest"
  3. ขยาย "Scene Configuration"
  4. ขยายรายการ 0 ภายใต้ "บทบาทเซสชันแอปพลิเคชัน" จากนั้นเปลี่ยนชื่อกระดานเรื่องราวที่นั่น

ป้อนคำอธิบายภาพที่นี่

และแอปพลิเคชันของคุณจะเริ่มทำงาน


1
นี่คือคำตอบที่ถูกต้อง เห็นได้ชัดว่าไม่เพียงพอที่จะตั้งค่าสตอรี่บอร์ดหลักจากเมนูแบบเลื่อนลงทั่วไป> อินเทอร์เฟซหลักอีกต่อไป
NRitH

1
ขอบคุณสำหรับสิ่งนี้. การลบคีย์ "Application Scene Manifest" (พร้อมกับคีย์ย่อยทั้งหมด) ช่วยแก้ปัญหาให้ฉันได้
Greg Brown

1
ฉันไม่รู้ว่าเกิดอะไรขึ้น แต่มันได้ผล
Bawantha

1
คุณช่วยชีวิตฉันไว้ :)
Yusuf Kamil AK

17

ในโปรเจ็กต์ที่ใช้UISceneใน iOS 13 และ Xcode 11 คุณต้องเอาUISceneStoryboardFileคีย์ออกจากไฟล์.plist.

Xcode 11:

xcode11-uiscene

การเปลี่ยนโดยตรงจากไฟล์:

uiscene-plist


15

ฉันลบแอพออกจากโทรศัพท์ทำ Product -> Clean แล้วโหลดอีกครั้ง นั่นคือทั้งหมดที่ต้องใช้สำหรับฉัน


สำหรับการดำเนินการทุกครั้งหากลบแล้วมีเพียงการดำเนินการของฉัน ... โปรดช่วยฉันด้วย xcode 10.1
Aruna M

12

ฉันได้รับข้อผิดพลาดนี้ แต่เป็นความตั้งใจของฉันที่จะลบสตอรี่บอร์ดทั้งหมด

การลบคีย์ 'Main Storyboard file base name' จาก plist ของฉันทำให้ข้อผิดพลาดหายไป


10

ไม่พบสตอรีบอร์ดชื่อ "หลัก" ในชุดรวม

เหตุผลที่ฉันคิดได้:

เท่าที่ความรู้ 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 คุณลองทำตามขั้นตอนข้างต้นที่ได้ให้ไว้ในคำตอบหรือไม่? สถานะเป็นอย่างไรหลังจากทำสิ่งนี้?
Randika Vishman

1
นี่เป็นวิธีแก้ปัญหาเมื่อฉันลบ ViewController ออกจากโปรเจ็กต์ซึ่งทำให้เกิดข้อผิดพลาดเดียวกัน!
Slarty Bartfast

8

ทำตามขั้นตอน:

1) คลิกกระดานเรื่องราวของคุณก่อน

2) จากนั้นคลิกตัวตรวจสอบไฟล์

3) จากนั้นเลือก "Target Membership"

ภาพหน้าจอ


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. จากนั้นคลิกตัวตรวจสอบไฟล์
  3. จากนั้นเลือก "Target Membership" และตรวจสอบโครงการของคุณ
  4. ทำเช่นเดียวกันกับไฟล์ ViewController !!! ส่วนสำคัญถ้าคุณใช้ ViewController.swift หรือ ViewController.m กับสตอรี่บอร์ดของคุณ !!!

4

ข้อผิดพลาดนี้เกิดขึ้นในขณะที่คุณกู้คืนไฟล์ main.storyboard จากถังขยะหลังจากลบไฟล์ของคุณ ฉันก็ประสบปัญหาเดียวกันเมื่อวานนี้

คุณต้องกำหนดเส้นทางตำแหน่งของ main.storyboard เป็น Relative to Group ในตัวตรวจสอบไฟล์ของ main.storyboard หลังจากนั้นในแอตทริบิวต์เดียวกันคุณต้องทำเครื่องหมายถูกในเป้าหมายแอปของคุณ (ดังที่คุณเห็นในภาพที่แนบมา)

ป้อนคำอธิบายภาพที่นี่


2

สองโซลูชันที่แตกต่างกันที่ได้ผลสำหรับฉันหลังจากอัปเกรดเป็น Xcode 10.1:

  • ในFile-> พื้นที่ทำงาน (หรือโครงการ) การตั้งค่า สวิทช์ที่จะสร้างระบบมรดก

  • ในขั้นตอนการสร้างเป้าหมายของคุณให้ลบโฟลเดอร์Base.lprojออกจากCopy Bundle Resources (หากอยู่ในรายการ) และตรวจสอบให้แน่ใจว่าสตอรีบอร์ดแต่ละรายการของคุณอยู่ในรายการและคัดลอกแยกกันแทน

หลังจากใช้การแก้ไขอย่างใดอย่างหนึ่งข้างต้นแล้วให้แน่ใจว่าคุณล้างโฟลเดอร์ Buildจากเมนูผลิตภัณฑ์หนึ่งครั้งมิฉะนั้นการแก้ไขอาจทำงานไม่ถูกต้อง


1

การลบแถวใน plist ทำให้หน้าจอเป็นสีดำในแอปของฉันด้วย และฉันแก้ไขโดยเปิดใช้งานการเป็นสมาชิกเป้าหมายของกระดานเรื่องราว


1

ดังที่ Kalpit Gajera กล่าวว่า "เปิด info.plist ของโครงการของคุณและลบแถวที่เลือกที่แสดงในภาพหน้าจอ" คุณเพียงแค่ลบ 'ชื่อฐานของไฟล์สตอรี่บอร์ดหลัก' ออกจาก Info.plist หลังจากคุณลบออกทำความสะอาดและรันโปรแกรมจะไม่ล้มเหลวอีกต่อไป แต่จะแสดงหน้าจอสีดำ เปิด Info.plist อีกครั้งและเพิ่มแถวกลับเข้าไปด้วยตนเองแก้ไขปัญหาแล้ว


0

เลือก main.storyboard เปลี่ยนมุมมองเป็น iOS 6.1 และรุ่นก่อนหน้าจากนั้น xcode จะบอกคุณว่าคุณต้องทำอะไร

ป้อนคำอธิบายภาพที่นี่


0

ทางออกของฉันคือ:

เมื่อฉันเพิ่มการเชื่อมต่อ Seque ระหว่างสองมุมมองและในการกำหนดค่า Projekt Deployment Target จะน้อยกว่า 8.0 ฉันได้รับข้อผิดพลาดนี้

โอเคเข้าใจง่ายเมื่อคุณพัฒนา iOS 6.0 (เช่น) คุณไม่สามารถใช้ Seque ได้เนื่องจาก Seque ต้องการ IOS 8.0 หรือใหม่กว่า ...... ;-)

ดังนั้นฉันตั้งค่า Deployment Target เป็น 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

หากสตอรี่บอร์ดของคุณถูกเพิ่มในโปรเจ็กต์ (ซึ่งคุณจะกำหนดได้จากส่วน Project File Inspector ของพื้นที่ยูทิลิตี้ xcode)กล่องกาเครื่องหมายถูกทำเครื่องหมายในพื้นที่สมาชิกเป้าหมาย

คุณต้องลบMain.Storyboardจาก "คัดลอกทรัพยากรบันเดิล" (ในBuild Phase) แล้วเพิ่มอีกครั้งใน "คัดลอกทรัพยากรบันเดิล" สิ่งนี้ได้ผลสำหรับฉันป้อนคำอธิบายภาพที่นี่


-1

ตกลงนี่เป็นกระบวนการ พยายามหลายสิ่งหลายอย่าง รัน xcode 6.4 บน OS 10.11 มีปัญหาไม่พบ 'หลัก' ในที่สุดสิ่งที่ฉันทำก็คือย้าย main.storyboard ออกจากเดสก์ท็อปของฉันด้วยเช่นกันทำความสะอาดและสร้างและออกจาก xcode xcode เริ่มต้นใหม่ตอนนี้มี main.storyboard สีแดง ฉันเรียกใช้มันแทบจะเหมือนกัน จากนั้นฉันคลิกขวาที่โฟลเดอร์โครงการและเลือกตัวเลือกเพิ่มไฟล์ไปที่ ... เรียกดูตำแหน่งที่อยู่และเปิด จากนั้นเมื่ออยู่ทางด้านขวาควรเป็นผู้ตรวจสอบข้อมูลประจำตัว คลิกที่โฟลเดอร์เล็ก ๆ ภายใต้ตำแหน่ง เรียกดูโฟลเดอร์นั้นอีกครั้งแล้วเลือกเลือก จากนั้นฉันก็วิ่งและทำงาน สาธุ !!!


-1

เลือกตัวควบคุมมุมมองที่คุณต้องการให้แสดงเป็นครั้งแรกในรายการทางด้านซ้ายของกระดานเรื่องราวจากนั้นในตัวตรวจสอบแอตทริบิวต์ตรวจสอบให้แน่ใจว่าชื่อเป็น "หลัก" และเลือกช่องทำเครื่องหมายสำหรับ "Is Initial View Controller"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.