46

私は数日前に新しいアプリを起動し、シミュレーターを使用してテストを開始しました。空のプロジェクトとして開始し、ストーリーボードを手動で追加しました。シミュレーターはアプリを正常にビルドして実行しますが、iPhoneにビルドしようとすると、メッセージが表示されます。「バンドルNSBundleに「MainStoryBoard」という名前のストーリーボードが見つかりませんでした」。

グーグルは何も出さず、この質問は私がストーリーボードのターゲットをチェックしたことを示唆しましたが、すべてが整っています。それでも、何かが配置されていなければ、シミュレーターも実行されません。

誰かが私を正しい方向に向けることができますか?

4

27 に答える 27

77

iPhoneシミュレーターでアプリを正常に動作させましたが、奇妙なことにXcodeが応答しなくなり、Xcodeを強制終了する必要がありました。Xcodeを再起動すると、「MainStoryboardという名前のストーリーボードが見つかりませんでした...」というメッセージが表示されました。

以下の手順に従って、この問題を修正しました。

  1. 「MainStoryboard.storyboard」の名前を「MainStoryboard_1.storyboard」に変更
  2. 「SupportingFiles」フォルダにあるファイル「$your_app$-Info.plist」を開きます。「メインストーリーボードファイルのベース名」を「MainStoryboard_1.storyboard」に編集します。
  3. アプリを再実行すると、うまくいきました。
  4. ストーリーボードファイルの名前を元の「MainStoryboard.storyboard」に戻しました。
  5. .plistファイルを編集して元に戻しました。
  6. アプリを再実行すると、うまくいきました。

何らかの理由で、Xcodeを強制終了した後、ファイル「MainStoryboard.storyboard」が認​​識されず、上記の手順に従うと、アプリはファイルを再び認識しました。

このソリューションがお役に立てば幸いです。

于 2012-02-21T10:46:44.040 に答える
35

シミュレータでは大文字と小文字は区別されませんが、デバイスでは大文字と小文字が区別されます。ストーリーボードの名前がMainStoryBoardではなくMainStoryboardの場合、これにより問題が発生します。

于 2012-01-08T07:16:12.690 に答える
24

私が遭遇したシナリオについて言及したいだけです。方法はわかりませんが、ストーリーボードはまだプロジェクトの一部でしたが、ターゲットから切断されました。これを修正するには、ストーリーボードを開き、[ファイルインスペクター](右パネルの左端のアイコン)を選択して、[ターゲットメンバーシップ]の下のプロジェクトを確認します。それが誰かを助けることを願っています。

于 2014-07-01T13:56:39.420 に答える
11

この問題は、「ベースの国際化を使用」の選択を解除し、特定のローカリゼーションではなく別のロケールでシミュレーターを実行すると発生します。

たとえば、プロジェクト設定でzh-CNローカリゼーションを指定し、en-USでシミュレーターを実行します。

于 2014-03-18T05:10:31.543 に答える
7

上記のすべてのソリューションを試しましたが、機能しませんでした。

徹底的な調査の結果、原因は次のとおりです。

バンドルリソースのコピーがTARGETS->BuildPhasesから欠落していました

これは、Cocoapodsの削除中に誤って削除されました。

これを修正する手順は次のとおりです。

  1. TARGETSプロジェクトに移動します
  2. plus (+) button左上隅にある現在をクリックします
  3. ドロップダウンから[新しいコピーバンドルリソース]を選択します
  4. ここで、あなたを追加しStoryboard files (Main, Launchscreen etc).ます。アセットフォルダも追加します。下部にあるプラス(+)ボタンをクリックすると、これらのファイルを追加できます

スクリーンショット

  1. を削除しますderived data content
  2. Delete the appシミュレータ/デバイスから再実行します
于 2017-02-16T11:00:29.707 に答える
4

ストーリーボードを削除した可能性があると思い、アプリの最初の起動時に.xibファイルを使用することにしました。このシナリオでは、Xcodeは存在しないストーリーボードを見つけようとします。

この場合、プロジェクト>>をクリックし、Info次のCustom iOS Target Propertiesキーと値のペアを削除します。 Main storyboard file base name

于 2014-12-22T06:44:25.450 に答える
4

これは、タブバーを備えたアプリ(Swift 2.1、Xcode 7.2)に役立ちました

    let storyboard: UIStoryboard = UIStoryboard(name:"Main",bundle: NSBundle(forClass: self.dynamicType))
    let tabController = storyboard.instantiateViewControllerWithIdentifier("MyTabBarIdentifier") as! UITabBarController

正しいターゲットメンバーシップ、コピーバンドルリソース、クリーンなビルドフォルダーなどを備えたMain.storyboardがありました(ほとんどの回答はこれを指しています)。

于 2016-01-28T16:11:30.200 に答える
4

Nitin Alaburの答えは私を助けましたが、間接的に。明確にするために別の回答を投稿する:

ストーリーボードを内部に持つ動的フレームワークを構築していますが、フレームワークをテストするために構築しているテストアプリで、このエラーが発生していました。

私のコードは次のようになりました:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil];

NSBundleバンドルが一体何なのかわからないので、私はそのようなものを無視していました。このユースケースでは、ストーリーボードがアプリケーションの「バンドル」の外に存在することが重要であることがわかりました(代わりに私のフレームワークのバンドルにあります)。このコードは、現在のクラスが存在するバンドル内のストーリーボードを見つけるようにiOSに指示します(私にとっては、フレームワークを含むバンドルです)。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:[NSBundle bundleForClass:[self class]]];
于 2016-06-14T19:57:53.283 に答える
3

単純なCleanでエラーが修正されました。

于 2015-05-28T21:30:00.280 に答える
3

ソースコードのナビゲーションに使用している場合は、以下のコードを使用してみてください

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];

多くの場合、名前に「Main.storyboard」と入力します。これは文字通りファイルの名前であるためですが、Obj-Cコーディングでは、「X.storyboard」の名前は「X」であるため、この場合は、 @"主要"。

于 2015-11-19T06:07:00.077 に答える
3

更新:Swift5およびiOS13:

  1. シングルビューアプリケーションを作成します。
  2. Main.storyboardを削除します(右クリックして削除します)。
  3. ファイルのデフォルトのシーン構成からストーリーボード名を削除します。Info.plistここに画像の説明を入力してください
  4. 開いSceneDelegate.swiftて変更func sceneします:
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 _ = (scene as? UIWindowScene) else { return }
}

 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).x

    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = ViewController()
        self.window = window
        window.makeKeyAndVisible()
    }
}

今、あなたは行ってもいいです:)

于 2019-10-22T12:42:48.133 に答える
2

プロジェクトに移動し、ターゲットを選択し、メニューからプルダウンしてストーリーボードを再選択します。

また、plistを更新することもできますが、一方を変更しても他方は変更されないことがわかりました。

于 2012-11-01T14:13:23.000 に答える
2

フォルダ.plistの下にある設定ファイル()を確認する必要がありますSupporting files

デフォルトのストーリーボードの名前を確認してください。

于 2015-11-20T15:54:15.350 に答える
2

私も同じ問題を抱えていました。このタイプの例外の原因は、「Main」ではなく「Main.storyboard」と書いたことです。.storyboard拡張子を指定する必要はありません。

于 2017-04-25T05:29:07.933 に答える
1

同様の問題が発生し、次のエラーが発生していました。

例外'NSInvalidArgumentException'、理由:'バンドルNSBundleに'MainStoryboard_iPhone'という名前のストーリーボードが見つかりませんでした

plistファイルを更新して修正しました。[編集]->[検索]->[ワークスペースで検索]に移動して、「ストーリー」を検索します。次に、ストーリーボードの適切な名前を更新します。

于 2012-03-19T20:59:47.067 に答える
1

これを防ぐために、ストーリーボードファイルの操作方法を変更する必要がありました。ストーリーボードを編集した後、ファイルを保存してXCodeを終了します。これにより、問題の発生を防ぐことができます。

于 2013-02-28T21:23:02.390 に答える
1

Xcodeを2回インストールしてプロジェクトを誤って開いたときに、この問題が発生しました。それは私のプロジェクトファイルを永久に壊しました(これは理解できます)。

于 2013-03-07T15:22:09.400 に答える
1

この問題は、コードでストーリーボードを呼び出しているときに発生しました。理由は、ストーリーボードに別の「単語」を使用したためです。このように解決しました。

[ターゲット]->[情報]に移動し、情報を選択し、ストーリーボードの名前をコピーして、ストーリーボードを呼び出している場所に貼り付けます。

少なくとも試してみてください…。

于 2014-01-13T07:34:41.607 に答える
1

これは、同じ名前の以前のアプリがシミュレーターにインストールされていたときに発生しました。

以前のアプリを削除し、[展開情報]でストーリーボードを再選択し、アプリを再実行すると、すべてが正常に機能しました。

于 2014-08-16T12:14:16.833 に答える
1

2つの可能性があります、

  1. ストーリーボードがターゲットに追加されていることを確認してください。

Select Storyboard > Go to file inspector (first right tab) > Check Target Membership

ここに画像の説明を入力してください

  1. 適切なでストーリーボードを初期化しますbundle

    • ストーリーボードが作業中の同じターゲットにある場合は、bundle = nil
    • ストーリーボードが作業中のターゲットとは異なる場合は、次のコードを使用してバンドルとストーリーボードを初期化してみてください。

      let bundle = Bundle(for: MyClass.self)
      let storyboard = UIStoryboard(name: "Main", bundle: bundle)
      
于 2017-11-04T09:49:49.557 に答える
0

に約150のフォントを追加したときに、デバイスでこのエラーが発生しましたUIAppFonts
私が彼らの数を約100に減らした後、それは消えました。

于 2013-01-11T04:16:53.280 に答える
0

最近iOSsimをデフォルト設定にリセットした場合は、環境設定でロケール設定を確認することも役立ちます。私はロシア語を唯一のロケールとしてアプリで作業していますが、simをリセットした後、simロケールが英語に設定されていたため、xCodeはアプリの起動を停止しました。

于 2012-12-02T18:29:49.190 に答える
0

MainStoryboard.storyboardやMainStoryboard〜iPad.storyboardのように、〜iPadまたは〜iPhoneのサフィックスがあるストーリーボードとないストーリーボードがあるプロジェクトでこの問題が発生しました。

問題は、MainStoryboard.storyboardがビルドディレクトリにコンパイルされたときにMainStoryboard〜iPad.storyboardを上書きしていたことでした。ファイルが逆の順序でコンパイルされた場合、両方とも問題なく保存されます。なぜこれが起こるのか分かりません。

これを回避するには、〜iPad / iPhoneサフィックスの使用を停止するか、バンドルリソースのコピーフェーズでファイルが正しい順序になっていることを確認します。

(XCode6.2beta2を使用)

于 2015-03-23T22:00:37.420 に答える
0

非常にばかげたものですが、.plistの「メインストーリーボードファイルベース名(iPad)」エントリに、「MainStoryboard」だけでなく「MainStoryboard.storyboard」が含まれていました。

于 2015-03-30T14:19:30.050 に答える
0

私にとっての解決策は、MainStoryboardをバンドルリソースに追加するだけでよいということでした。その後、正常に動作します。

[プロジェクト]->[ビルドフェーズ]->[バンドルリソースのコピー]->[ + ]ボタンをクリックして、ファイルを追加します。

于 2015-09-29T16:16:48.363 に答える
0

ビルドフェーズ>バンドルリソースのコピーでinfo.plistに移動し、アイコン「+」を使用してストーリーボードを追加します

于 2015-10-15T18:46:38.297 に答える
0

私の場合、それはMacアプリケーションのフレームワーク内のストーリーボードでした。私が使用していたもの:

let storyboard = NSStoryboard(name: "StoryboardName", bundle: nil)

正しいバンドルを取得するには、フレームワークのバンドル識別子を使用する必要があります。

let storyboard = NSStoryboard(name: "StoryboardName",
                            bundle: Bundle(identifier: "com.company.FrameworkName"))
于 2017-10-23T01:14:04.527 に答える