89

Xcode 4.5.2 では、次の警告が表示されます。

Unsupported Configuration    
Scene is unreachable due to lack of entry points and does not have an identifier 
for runtime access via -instantiateViewControllerWithIdentifier:.

残念ながら、犯行現場を特定することはできません。問題ナビゲーターで警告を選択しても、ストーリーボードで何も強調表示されません。かなり複雑なストーリーボード (30 以上のシーン) があります。

助言がありますか?

警告のスクリーンショット

4

22 に答える 22

139

ストーリーボードで、各ビューコントローラ(下の画像の赤い矢印)を選択し、[ストーリーボードID]フィールド(赤い楕円形)を確認します。ストーリーボードIDフィールドはどれも空白にしないでください。あなたがそれを見つけたとき、それが犯人です。

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

于 2012-11-23T19:50:56.620 に答える
50

このスレッドは古いですが、私にとって何がうまくいったかを説明する答えが見られなかったので、ここに行きます...

このエラーが発生し、ストーリーボードを視覚的に調べると、すべてのビュー コントローラーがルート ビュー コントローラーに接続されているように見えました。

ストーリーボードで17個のビューコントローラーすべてに名前を付けてみました(@bobnobleの回答のように)。ビュー コントローラの長い名前に基づく命名規則を使用しました。たとえば、「ジョブ ビュー コントローラ」の場合は「jvc」です。ビルドしようとすると、ビュー コントローラーの 1 つに重複した名前があることを示すエラー メッセージが表示されました。追跡してみると、View Controller の実際の複製がその双子の上に正確に積み重ねられていることがわかりました。完全に元に戻せなかったのは、ユーザー インターフェイスの実験によるカット アンド ペーストによる損傷だと思われます。

とにかく、接続されていない双子を削除すると、問題が解決しました。その後、コードで参照されていない VC 名をすべて削除しました。

于 2014-04-25T16:44:10.257 に答える
20

恐れ入りますが、30個すべてを確認し、ストーリーボードIDまたはそのビューコントローラーへのセグエがあるかどうかを確認する必要があります。2つのうちの1つが必要であり、両方ともオプションです。

于 2012-11-23T20:05:21.853 に答える
6

Storyboard IDすべてのシーンに設定する必要はありません。UINavigationController

さて、私は約50〜60のシーンを持っていますが、これらの警告を受け取ったので、セグエに接続されていないコントローラー(シーン)またはNavigationControllerのみを設定する必要があることに気付きましたStoryboard ID.

ここに画像の説明を入力

上の画像では、セグエに接続されていないことがわかりますUINavigationController。これは、その警告の犯人でした。

この警告を削除するには、ストーリーボード ID を指定するだけです。

于 2016-05-12T06:59:33.267 に答える
5

同じ問題がありました。ストーリーボードには、ナビゲーションとタブ バー コントローラーを使用して多くのビューがあります。私にとっては、一部のビューが接続されていないことを知らせる警告でした。 すべてのビューが何らかの方法でルート ビュー コントローラーに接続されていることを確認します。この警告を解消するためにこのプロジェクトをゼロから開始していましたが、ビューが接続されていないときに同じ警告が表示されることに気付きました。

于 2012-11-26T04:32:49.610 に答える
3

問題のあるシーンを見つける最も簡単な方法:

課題ナビゲーター (左パネルの検索ボタンの横) に移動し、エラーをダブルクリックします。ウィンドウの中央に問題のあるシーンを含むウィンドウがポップアップします。

(これは実際には一般的に正しいです。エラーをダブルクリックすると、通常、エラーが中央に表示されたポップアップが表示されます。これは巧妙な小さなトリックです!)

補足: XCode では、ナビゲーション コントローラーのルート ビュー コントローラー (初期ビュー コントローラー) であるシーンに対して、このエラーが誤って表示されることがあります。簡単な修正は、このルート ビュー コントローラーに Storyboard ID を与え、コンパイル (エラーはなくなるはずです) してから、storyboardID を削除します (エラーはなくなりました)。

于 2014-12-23T08:05:41.413 に答える
2

この問題の原因となっているコントローラーまたはシーンを確認する最も簡単な方法は、次のとおりです。

  • .storyboardプロジェクトナビゲータでCtrlキーを押しながらクリックし、を選択しOpen As > Source Codeます。これにより、ストーリーボードの基礎となるXMLが表示されます。
  • このビューでは、警告は、問題のあるシーンに関連するXMLの行に明確に関連しています。

さて、私の場合、「問題のあるシーン」には識別子とセグエが含まれていたため、警告は特に厄介でした。シーンを削除してから削除を元に戻すことで、問題を解決することができました。エレガントではありませんが、機能しました。これを行う前に、ストーリーボードを保存しました。振り返ってみると、私はコピーを作成しdiff、前後に'dする必要がありました。

于 2013-02-18T17:52:22.470 に答える
2

私にとって、それは aStoryboard IDまたは a のせいではありませんでしたSegue。を設定していなかったため、この警告を受け取りましたView Controller's Custom Class

で を選択しView ControllerStoryboardでアイコンUtilities Paneを選択しIdentity Inspectorます。の下Custom Classで、フィールド内の値を確認しClassます。

とだけ表示されている場合UIViewControllerは、クラス名を入力する必要があります。これは、カスタムサブクラスを構成する.hおよびファイルの名前になります。.mUIViewController

于 2014-11-26T19:29:01.170 に答える
2

Xcode 7 では、これを簡単に処理できます。問題のあるシーンを見つけるために、手動ですべてのシーンを調べる必要はありません。最初にレポート ナビゲーターに移動します。ここでは、既知の問題に関する詳細情報を取得できます。問題の説明は次のようになります。

Base.lproj/Main.storyboard: fPh-fe-F5F : 警告: エントリ ポイントがないためシーンに到達できず、-instantiateViewControllerWithIdentifier: によるランタイム アクセス用の識別子がありません。

この情報を使用して、オブジェクト ID (この場合はfPh-fe-F5F ) をコピーし、ワークスペースでこの文字列のオカレンスを検索できます。文字列は Main.storyboard ファイルにあります。検索結果をダブルクリックすると、選択したシーンの Main.storyboard が開きます。問題のあるシーンがわかったら、ストーリーボード ID を設定するか、「Is Initial View Controller」を設定することで、問題を簡単に修正できます。

于 2016-07-31T21:22:45.697 に答える
1

識別子を設定するだけです。右ペインの属性インスペクタに、「識別子」というフィールドがあります。そこに任意の文字列を入れるだけで、これは機能するはずです

ナビゲーションコントローラーをクリックして、属性インスペクターの下にある「is initial View Controller」ボタンをクリックすると、これも機能するはずです。

于 2012-11-23T14:39:26.377 に答える
1

私は同じ問題に直面し、すべてのviewControllerとNavigationControllerの識別子もストーリーボードIDに置くことで解決しました。エラーはすぐに削除されます

楽しい!!!

于 2016-03-23T18:03:27.107 に答える
0

これがまだ言及されていないかどうかはわかりませんが、この警告が表示される別の理由は、セグエが間違った方向に進んでいる場合です。たとえば、私のプロジェクトではこの警告が表示されましたが、実際にはすべてのコントローラーが接続されていました。ただし、そのうちの 1 つには、基本的に、親が子を提示する代わりに、子から親を提示しようとするセグエがありました。これにより、同じ警告が発生しました。

于 2015-04-04T10:05:26.417 に答える
0

Storyboard に何も設定されていない UIViewController があるときに、この警告が表示されました。Storyboard ID を設定することで、この警告を回避しました。

于 2015-04-16T12:02:07.133 に答える
0

すべての MVC にストーリーボード ID を与えるだけでうまくいきました。

于 2016-03-03T10:43:04.043 に答える
0

同じエラーが発生しました: 私にとってのエラーは、ストーリー ボードでビュー コントローラーを開始しなかったことです。

それを修正すると、その警告が削除されました。

于 2015-08-27T06:02:11.273 に答える
0

これが私のために働いたものです:

  1. テキスト エディターでストーリーボードを開きます。
  2. バージョンを 3.0 から 2.0 に変更し、保存して閉じます。
  3. Visual Studio でもう一度開きます。ドキュメントを自動的に変換して開きます。
于 2015-08-03T17:31:03.163 に答える
0

たぶん、この XQuery は、それらの厄介なシーンを見つけるのに役立ちます

for $i in .//scene/objects/*[1][not(@storyboardIdentifier) or @storyboardIdentifier= '']/@id      (: find every scene that has an empty storyboardIdentifier :)
where count(.//segue[@destination= $i])= 0 and $i!= ./document/@initialViewController             (: filter the results to the scenes that are not destinations of a segue and exclude the initialViewController :) 
return ($i, $i/../@customClass)                                                                   (: return the storyboard-id and the customClass, if any :)

xqilla がインストールされている場合は、クエリをファイルに保存し、次のように使用します。

xqilla <xqueryfile> -i <path to your storyboard>
于 2013-04-09T15:40:33.790 に答える