Không thể tìm thấy bảng phân cảnh có tên 'Chính' trong gói


86

Tôi gặp một lỗi lạ: 'Could not find a storyboard named 'Main' in bundle NSBundle'khi cố gắng chạy ứng dụng của mình trên thiết bị iOS thực.

Tôi có tệp trong thư mục của mình và nó hoạt động tốt trong trình mô phỏng. Tuy nhiên, trong Copy Bundle Resourcesphần, tệp Main.storyboardcó màu đỏ.

Tôi đã thử xóa và thêm lại, khởi động lại Xcode, dọn dẹp bản dựng, v.v. mà không có kết quả. Đây là cảnh báo tôi nhận được trong 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

Tôi đã mô tả cách giải quyết vấn đề bên trong bài đăng này: stackoverflow.com/a/21098195/1141395
Alex Cio

Sự cố này chủ yếu xảy ra do cài đặt ứng dụng bị hỏng. Giải pháp là làm sạch và xây dựng dự án. Đồng thời, xóa ứng dụng hiện có khỏi thiết bị / trình mô phỏng và chạy lại.
Krishnabhadra

Người dùng Xcode 11 , cuộn xuống stackoverflow.com/a/58452686 , có thể đó chính xác là trường hợp của bạn.
Cemen

Câu trả lời:


92

mở info.plist về dự án của bạn và xóa hàng đã chọn được hiển thị trong ảnh chụp màn hìnhenter image description here

Nếu bạn nhận được màn hình đen, hãy đảm bảo rằng bảng phân cảnh ban đầu mới của bạn được chọn làm giao diện chính của bạn enter image description here


24
Cảm ơn, nhưng điều này chỉ khiến ứng dụng của tôi khởi chạy với màn hình đen. Không có sự cố mặc dù.
Carpetfizz

Đảm bảo có hai dòng này trong ứng dụng - (BOOL) của bạn: (UIApplication *) ứng dụng didFinishLaunchingWithOptions: (NSDictionary *) khởi chạyOptions ...: (1) self.window = [[UIWindow Distribution] initWithFrame: [[UIScreen mainScreen] giới hạn]]; (2) self.window.backgroundColor = [Màu trắng của UIColor];
Joel Hansen

@ Carpetfizz Thêm '[self.window makeKeyAndVosystem];' vào AppDelegate của bạn.
Alserda

4
"khởi chạy ứng dụng với một màn hình đen", không ai có bất kỳ ý tưởng cho điều này?
Umit Kaya

@Umitk thiết lập nền sang màu trắng (view.backgroundColor = .white) hoặc bất kỳ màu nào khác mà bạn thích
Stephane Paquet

59

Bạn có thể kiểm tra tư cách thành viên mục tiêu của bảng phân cảnh. Có thể ở đó vấn đề là:

Nó sẽ trông như thế này:

Thành viên mục tiêu


Tôi đã gặp vấn đề tương tự và lúc đầu tôi nghĩ rằng tôi đã không sao chép đúng tài nguyên vào mục tiêu, nhưng việc sửa thành viên mục tiêu đã khắc phục sự cố.
pyj

2
Cảm ơn, đã làm việc! Tôi đã làm sạch, đổi tên tệp, cập nhật danh sách mà không vui vẻ gì. Đó luôn là điều rõ ràng nhất khiến bạn hiểu được.
Jim Geldermann

Xin chào, tôi đang gặp vấn đề tương tự nhưng các cửa sổ thành viên mục tiêu không hiển thị, Xcode 7. giúp đỡ xin
DrPatience

Vì lý do nào đó, mục tiêu của tôi không được chọn .. Cảm ơn câu trả lời này .. Đã giải quyết !!
Ümañg ßürmån

58

Đối với bất kỳ ai gặp phải vấn đề này trên Xcode 11, đây là cách bạn khắc phục nếu gặp phải vấn đề này khi thực hiện thiết lập dự án ít bảng phân cảnh

(Thêm một số phần mà ricardopereira đã bỏ sót)

1) Đầu tiên, xóa tệp Main.storyboard

2) Tiếp theo, đi tới PROJECT_NAME -> CHUNG

Trong menu thả xuống của giao diện chính, hãy xóa văn bản Chính

xóa tham chiếu đến chính khỏi cài đặt chung

3) Bây giờ truy cập info.plist và xóa Tên bảng phân cảnh

xóa tham chiếu đến bảng phân cảnh khỏi info.plist

4) Cuối cùng, sửa đổi mã cảnh (_: willConnectTo: options) trong tệp SceneDelegate.swift (Có! Nó không còn trong App Delegate nữa.)

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()
    }

Thay vào đó, bạn cũng có thể tham khảo video này: https://www.youtube.com/watch?v=Htn4h51BQsk


3
Câu trả lời của bạn là gần như chính xác chỉ có một thay đổi nhỏ trong chức năng cảnh: 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
Để thêm một số điểm nhấn, mục nhập info.plist không chỉ là mục nhập bảng phân cảnh chính thông thường mà CŨNG là mục nhập trong tệp kê khai cảnh ứng dụng mới cho iOS 13. Tôi đã phải đọc qua hai lần trước khi nhận ra.
jboulter

Đây là cách làm đúng lúc này! ^^ Apple liên tục thay đổi mọi thứ.
Yuchen Zhong

36

Bản cập nhật cho các ứng dụng được tạo cho iOS 13.0 trở lên. (Xcode 11)

Nếu bạn gặp lỗi "Không thể tìm thấy bảng phân cảnh có tên 'Chính' trong gói ngay cả sau khi thay đổi" Tên cơ sở của bảng phân cảnh chính "trong info.plist và" Giao diện chính "trong Triển khai trong Mục tiêu.

Sau đó, bạn phải thay đổi một mục nhập khác trong tệp info.plist.

  1. Mở tệp info.plist.
  2. Mở rộng "Tệp kê khai cảnh ứng dụng".
  3. Mở rộng "Cấu hình cảnh".
  4. Mở rộng mục 0 trong "Vai trò phiên ứng dụng" và sau đó thay đổi tên bảng phân cảnh ở đó.

nhập mô tả hình ảnh ở đây

Và ứng dụng của bạn sẽ bắt đầu hoạt động.


1
Đây hoàn toàn là câu trả lời đúng. Dường như không còn đủ để thiết lập bảng phân cảnh chính từ menu thả xuống Chung> Giao diện chính.
NRitH

1
Cám ơn vì cái này. Xóa khóa "Tệp kê khai cảnh ứng dụng" (cùng với tất cả các khóa phụ của nó) đã giải quyết được sự cố cho tôi.
Greg Brown

1
Tôi không biết chuyện gì đã xảy ra nhưng đây là công việc
Bawantha

1
Bạn đã cứu mạng tôi :)
Yusuf Kamil AK

17

Trong một dự án sử dụng UIScenetrong iOS 13 và Xcode 11, bạn cần xóa UISceneStoryboardFilekhóa khỏi .plist.

Xcode 11:

xcode11-uiscene

Thay đổi trực tiếp từ tệp:

uiscene-plist


15

Tôi đã xóa ứng dụng khỏi điện thoại của mình, làm Sản phẩm -> Làm sạch và tải lại. Đó là tất cả những gì tôi cần.


cho mỗi thực hiện nếu xóa sau đó duy nhất của nó thực hiện cho tôi ... xin vui lòng giúp đỡ tôi trong xcode 10.1
Aruna M

12

Tôi đã gặp lỗi này, tuy nhiên, tôi có ý định xóa hoàn toàn các bảng phân cảnh.

Xóa khóa 'Tên cơ sở tệp Bảng phân cảnh chính' khỏi danh sách của tôi đã khắc phục được lỗi.


10

Không thể tìm thấy bảng phân cảnh có tên 'Chính' trong gói

Lý do tôi có thể nghĩ ra:

Theo như kiến ​​thức iOS của tôi đã kết luận, điều này chỉ xảy ra vì XCode không thể tìm thấy tham chiếu đến tệp Main.storyboard trong thư mục dự án của tôi để sao chép nó vào Ứng dụng.

Độ phân giải:

  1. Đã chọn tệp Main.storyboard và cố gắng xóa và từ hộp thoại bật lên như sau: nhập mô tả hình ảnh ở đây

  2. Đã nhấp vào nút "Xóa tài liệu tham khảo".

  3. Sau đó, từ nơi thực tế mà tôi có thể tìm thấy tệp Main.storyboard trong thư mục dự án, kéo và thả vào XCode, và một lần nữa từ hộp thoại bật lên như sau: nhập mô tả hình ảnh ở đây

  4. Tôi đã chọn, "Tạo tham chiếu thư mục" (vì đó là một điều tôi dự định làm vì tôi đã thay đổi cấu trúc tệp và thư mục của dự án). Nhưng hầu hết các trường hợp chọn "Tạo nhóm" cũng có thể hoạt động. Và nhấp vào nút "Hoàn tất". Các tệp Storyboard của tôi đã nằm trong như được hiển thị trong ảnh chụp màn hình đã có trong một Base.lprojthư mục như sau:

    nhập mô tả hình ảnh ở đây

    Lưu ý: Một điều quan trọng cần nhắc ở đây ở bước này là, đừng quên đánh dấu vào hộp kiểm "Thêm vào mục tiêu" cho ứng dụng của bạn.

  5. Làm sạch Sản phẩm, xây dựng lại và nếu nó thành công, hầu hết thời gian thử chạy nó sẽ thành công.

Hy vọng điều này có thể hữu ích cho ai đó ngoài kia! Tôi đã thử điều này trên XCode 7.3.1 và trên iOS Sim 9.3 và iPhone 6S!


Vui lòng giúp tôi, tôi cũng gặp phải vấn đề này sau khi cài đặt os10.14.1 và xc0de 10.1..am đang cố gắng giải quyết từ 3 ngày nhưng vẫn .. dự án của tôi hoạt động tốt trong xcode9.1 ..
Aruna M

@ArunaM Bạn đã thử các bước trên mà tôi đã đưa ra trong câu trả lời chưa? Trạng thái sau khi làm điều này là gì?
Randika Vishman

1
Đây là giải pháp khi tôi xóa ViewController khỏi dự án gây ra lỗi tương tự!
Slarty Bartfast

8

Làm theo các bước:

1) Đầu tiên nhấp vào bảng câu chuyện của bạn

2) Sau đó nhấp vào Trình kiểm tra tệp

3) Sau đó chọn "Tư cách thành viên mục tiêu"

Chụp màn hình


6

Trình mô phỏng không phân biệt chữ hoa chữ thường, nhưng thiết bị thì có. Nếu bảng phân cảnh của bạn được gọi là MainStoryboard, không phải MainStoryBoard, điều này sẽ gây ra sự cố của bạn. và aslo * không sử dụng phần mở rộng chỉ viết tên bảng câu chuyện

main.storyboard -> chỉ main là tên bảng phân cảnh


6

Swift 5.1 & xCode 11.2

Trong trường hợp của tôi, tôi quên thay đổi Storyboard NametrongInfo.plist

nhập mô tả hình ảnh ở đây

Info.plist mã nguồn

    <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. Mở tệp bảng phân cảnh của bạn
  2. Sau đó nhấp vào Trình kiểm tra tệp
  3. Sau đó chọn "Tư cách thành viên mục tiêu" và kiểm tra dự án của bạn
  4. Làm tương tự đối với tệp ViewController !!! phần quan trọng nếu bạn sử dụng ViewController.swift hoặc ViewController.m với bảng phân cảnh của mình !!!

3

Lỗi này xảy ra khi bạn khôi phục tệp main.storyboard của mình từ thùng rác sau khi xóa tệp. Tôi cũng phải đối mặt với vấn đề tương tự ngày hôm qua.

Bạn phải đặt đường dẫn vị trí của main.storyboard là Liên quan đến Nhóm trong trình kiểm tra tệp của main.storyboard. Sau đó trong cùng một thuộc tính, bạn phải đảm bảo dấu kiểm trên mục tiêu ứng dụng của mình (Như bạn có thể thấy trong hình đính kèm).

nhập mô tả hình ảnh ở đây


2

Hai giải pháp khác nhau phù hợp với tôi sau khi nâng cấp lên Xcode 10.1:

  • Trong Cài đặt Tệp-> Không gian làm việc (hoặc Dự án) . Chuyển sang Hệ thống xây dựng kế thừa .

  • Trong các giai đoạn xây dựng mục tiêu của bạn , hãy xóa thư mục Base.lproj khỏi Copy Bundle Resources (nếu được liệt kê) và đảm bảo rằng mỗi bảng phân cảnh của bạn được liệt kê và sao chép riêng.

Sau khi áp dụng một trong các bản sửa lỗi ở trên, hãy đảm bảo rằng bạn Dọn dẹp Thư mục Bản dựng từ menu Sản phẩm một lần, nếu không các bản sửa lỗi có thể không hoạt động bình thường.


1

Xóa hàng trong danh sách cũng gây ra màn hình đen trong ứng dụng của tôi. Và tôi đã sửa nó bằng cách cho phép thành viên mục tiêu của bảng phân cảnh


1

Như Kalpit Gajera đã nói, "mở info.plist của dự án của bạn và xóa hàng đã chọn hiển thị trong ảnh chụp màn hình". Bạn chỉ cần xóa 'Tên cơ sở của bảng phân cảnh chính' khỏi Info.plist. Sau khi bạn gỡ bỏ, làm sạch và chạy, chương trình sẽ không còn bị lỗi nữa mà sẽ hiển thị màn hình đen. Mở lại Info.plist và thêm lại hàng theo cách thủ công. Sự cố đã được giải quyết.


0

chọn main.storyboard, thay đổi chế độ xem như iOS 6.1 trở về trước, sau đó xcode sẽ cho bạn biết bạn cần phải làm gì.

nhập mô tả hình ảnh ở đây


0

Giải pháp của tôi là:

Khi tôi thêm Kết nối nối tiếp giữa hai Chế độ xem và trong Cấu hình Projekt, Mục tiêu triển khai nhỏ hơn 8,0 thì tôi gặp lỗi này.

ok, dễ hiểu khi bạn phát triển cho IOS 6.0 (ví dụ), bạn không thể sử dụng Seque, vì Seque cần IOS 8.0 trở lên ...... ;-)

vì vậy, tôi đặt Mục tiêu triển khai thành 8.0 và lỗi đã biến mất !!!! trong khi khác, tôi hủy tất cả các Kết nối Segue và xử lý nó bằng IBAction, old school ;-)


0

Tôi đang di chuyển tệp Main.Storyboard vào thư mục con "màu xanh", điều này gây ra sự cố, tôi phải thêm các thư mục con theo các hướng dẫn này Xcode 6.3 Sự cố tệp mới

thì việc di chuyển tệp Main.Storyboard sang thư mục con màu vàng đã làm việc với tôi


0

Vấn đề của tôi đã được giải quyết bằng cách xóa .xmlhậu tố khỏiMain.storyboard.xml file .

Rõ ràng, hậu tố đã thay đổi so với phiên bản mà tôi đã nhập dự án từ đó.

Do đó, đổi tên tệp (xóa .xmlhậu tố) và khởi động lại, sau đó Project-> clean....khắc phục sự cố.


0

Nếu bạn vẫn có màn hình đen, hãy thử thêm mã bên dưới vào đại biểu cảnh của bạn

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

Nếu bảng phân cảnh của bạn được thêm vào dự án (mà bạn sẽ xác định từ phần Trình kiểm tra tệp dự án của khu vực tiện ích xcode)Hộp kiểm được đánh dấu trong khu vực thành viên mục tiêu

Bạn chỉ cần xóa Main.Storyboardkhỏi "Sao chép tài nguyên gói" (trong Build Phase) và thêm lại nó trong "Sao chép tài nguyên gói". Điều này đã làm việc cho tôi.nhập mô tả hình ảnh ở đây


-1

Ok, đây là một quá trình. Đang thử rất nhiều thứ khác nhau. Chạy xcode 6.4 trên OS 10.11. Có vấn đề không thể tìm thấy 'Chính'. Cuối cùng những gì tôi đã làm là chuyển main.storyboard trên cả màn hình của tôi khỏi Finder. khởi động lại xcode bây giờ nó có một main.storyboard màu đỏ. tôi chạy nó hầu như làm điều tương tự. sau đó tôi nhấp chuột phải vào thư mục dự án và chọn tùy chọn thêm tệp vào ... Duyệt đến vị trí của nó và mở nó. sau đó khi nó ở đó ở bên phải phải là thanh tra danh tính. nhấp vào thư mục nhỏ dưới vị trí. duyệt lại thư mục đó và chọn chọn. Sau đó tôi chạy và nó hoạt động. Amen !!!


-1

Chọn bộ điều khiển chế độ xem mà bạn muốn hiển thị trước tiên trong danh sách ở bên trái của bảng phân cảnh, sau đó trong trình kiểm tra thuộc tính đảm bảo tiêu đề của nó là "Chính" và hộp kiểm cho "Là Bộ điều khiển chế độ xem ban đầu" được chọn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.