「ViewControllerという名前のクラスの情報が見つかりませんでした」


154

このバグは、私がXcode(4.6.3)を使い始めて以来、私を悩ませています。ストーリーボードアイテムをコードにリンクしようとすると、必ずエラーが発生します。

ViewControllerという名前のクラスの情報が見つかりませんでした。

これはカスタムクラスでも発生します。私は次のような方法を試しました:

  • デリゲートデータを削除しています。
  • クラスの削除と再追加。
  • Xcodeを再起動します。
  • Xcodeを再インストールします。

クラスが何であれ、Ctrlキーを押しながらドラッグしてプロジェクトに接続を作成することはできません。まったく新しいテンプレートアプリケーションでも同じ問題が発生します。コードを手動で入力してからctrlキーを押しながらドラッグすると、正常に接続できますが、自動的に追加することはできません。これまでインターネットで見つけたことは何も助けになりませんでした。ポインタはありますか?


ViewController .mファイルが適切なターゲットに含まれていることを3倍確認していますか?(右側のインスペクタパネルのチェックボックス)
アルフィーハンセン2013

2
ストーリーボードにビューコントローラーがあり、ビューを管理するためにインスタンス化する必要があるクラスの名前に「ViewController」を指定した。ストーリーボードの各ビューコントローラーを確認します。ビューコントローラーを選択し、右側のペインの「IDインスペクター」を確認し、「カスタムクラス」プロパティを確認します。「ViewController」と表示されている場合は、問題があります。ビューコントローラを管理するクラスの名前を入力するか、UIViewControllerを入力してデフォルトのUIKit実装を取得します。
ニコラスハート

1
IDインスペクターでカスタムクラスを「UIViewController」に変更し、ストーリーボードからViewController.hにCtrlキーを押しながらドラッグできなくなりました。(それに応じてビューコントローラーのクラスを設定した後で)新しいクラスを作成してCtrlキーを押しながらドラッグしようとすると、同じ "情報が見つかりませんでした"というエラーが表示されます。
user2597451 2013

4
私にはこの問題があり、自動生成されたViewControllerクラスを変更するとうまくいきました。例えば、単に追加NSLog()するviewDidLoad:
JB

回答:


292

この問題を解決したのは、プロジェクトからクラスを実際に削除することでした。

手順:

  1. プロジェクトファイルエクスプローラー(左側のパネル)でクラスを見つけて右クリックし、[削除]をクリックします。
  2. 参照を削除します(クラスを永久に失うので、ゴミ箱に移動しないでください)
  3. クラスを含むフォルダーを右クリック->ファイルを追加...
  4. 削除したクラスをファイルシステムで見つけます。

これにより、Xcodeはクラスをストーリーボードにリンクし直すように強制されます。

注:私にとっては、以下は機能しませんでした

  • Xcodeを閉じる
  • プロジェクトの掃除
  • ストーリーボードからクラス名を削除して再入力する

これはApple側のバグだと思う


8
私はこれを試しましたが、うまくいきませんでした/-:同じエラー。
Michael

1
@マイケル、はい、今、私は上記のどれもまったく機能しない状況にあります。Xcodeは***
Chris Harrison

5
この問題は2013年7月に遡り、本日2016年5月の時点で同じバグが発生し、この回答で修正しました。何年も経ってから、Appleはそれを永久に修正しないのですか?
SkyWalker

3
これがまだ問題であるとは信じられません。XCode 8.1 ..
fisk

2
2017(バージョン8.2(8C38))、そしてまだ生きているXcode SUCKS。UIスタッフをストーリーボードからあるシーンから別のシーンにコピーアンドペーストすると、私に起こります
Jaime Agudo

135

まだ誰もがこれにイライラしている場合に備えて、物事を機能させるトリックがあります。

たとえば、次のように、クラスにアウトレットを手動で入力し、コードからIBまたはストーリーボードのビューに@IBOutlet weak var someView: UIView!ドラッグします。この後、IB /ストーリーボードからクラスにドラッグして接続することができます。アシスタントエディターは「自動」でクラスを認識します。

毎回動作します。


6
@ Gmeister4、コードでアウトレットを作成すると、アウトレットの左側に小さな円が表示されます。その円をクリックしてIBまたはストーリーボードのビューにドラッグし、接続を確立します。
Andrew Robinson

4
上の答えよりも簡単です。+1
cph2117 2015年

2
この後でも、適切な方法でそれを行うことはできませんが、少なくともこれは機能します!
Alexandre G

1
上記の答えはどれもうまくいきませんでした。この答えだけが私にとってうまくいきました。
coolcool1994 2016年

1
すごい、それだけです!
Sam

38

私にとっては、右側の列のターゲットメンバーシップからそれらを削除し、それらを再度追加することでトリックを行いました ここに画像の説明を入力してください


これも私からうまくいきました。ViewController.swiftクラスを複製しましたが、これが解決策のようです。
UberJames、2016年

Xcode 8.0にまだ存在するXcodeのバグだと思います
jiangjiefs

これはXcode 8.3.3で今私に起こりました、そしてあなたの解決策は最も単純でうまくいきます。ありがとうございます!!!
RoberRM 2018

Xcode 11.5にもまだ存在します(真剣にAppleを意味しますか?)。私のために働いた唯一のソリューションはここにリストされています。
クリストフフォンダッチ

12

VCがクラスファイルを参照しないため、Xcodeが原因の場合があります。このための簡単な解決策は次のとおりです。

指定されたとおりにプロパティを手動で記述します。

class YourClassName{

     @IBOutlet weak var YourTableName: UITableView!

}

これにより、@IBOutletの前に空のリンク記号が作成されます。プロジェクトをアシスタントエディターで開き、リンク記号ここに画像の説明を入力してくださいをクリックして、接続するビューにドラッグします(TableViewに接続しました)。以上です。ハッピーコーディングをお楽しみください!!!


8

Xcode 8で2017年4月にこの問題が発生しました

コードを使用してアウトレットを作成し、コンパイルするだけで修正されます。例えば:

@IBOutlet weak var containerViewHeight: NSLayoutConstraint!

あなたはXcodeを愛するようになった…

編集:Xcode 9で引き続き発生


7

次の手順は私にとってはうまくいく

1- Xcodeを閉じた後、プロジェクトを再度開く必要があります。

2-プロジェクトファイルのインデックス作成を待つ

3-動作するかどうかを確認します

4-それでも機能しない場合は、手順5に従ってください。

5-プロジェクトターゲットのクリーンアップとビルド

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


7

私はすべてを試しましたがうまくいきませんでしたので、私にとってはうまくいきました:

  • ビルドフォルダーとプロジェクトを消去します。
  • プロジェクトを開く(ウィンドウ->プロジェクト)
  • リストからプロジェクトを見つけて、派生データを削除します
  • Xcodeを閉じる
  • コンピュータを再起動します(開いているウィンドウを再度開くことを選択せず​​に)
  • Xcodeを実行する
  • 作業!

すべてのビューコントローラーが認識されていなかったため、すべてのファイルを削除して再追加することはできませんでした。これは大きなプロジェクトであるためです。


4

私にとって、次のことがうまくいきました:

  1. 「クリーン」および「クリーンビルドフォルダー」を実行します(「製品」メニューの「オプション」を押して「クリーンビルドフォルダー」コマンドを取得します

  2. Xcodeを停止

  3. ターミナルで、派生データフォルダーに移動します。

    (/ユーザー//ライブラリ/開発者/ Xcode / DerivedData)

プロジェクトの派生データディレクトリを削除します。

  1. 空気で死んだ鶏を波します。

  2. Xcodeを起動


3

これまでにいくつかの答えを組み合わせて実行する必要がありました。

  1. ストーリーボードからカスタムクラス名を削除します。

(ストーリーボードのビューコントローラーの左上にある黄色のボタンをクリック->アイデンティティインスペクターに移動(オプション+コマンド+ 3)->上部のカスタムクラス名を削除)

  1. ビューコントローラファイルへの参照を削除します。

(ファイルを右クリック->削除->参照を削除)

  1. ビューコントローラーファイルをプロジェクトに追加します。

(ファイルがあったフォルダを右クリック-> "[プロジェクト]にファイルを追加")

  1. カスタムクラス名をストーリーボードに追加します。

3

人々が上記を試してもまだうまくいかない場合、私のために働いた奇妙なトリックは、空白のチャンクにアウトレットを追加することでした。追加する行の真上または真下に他の行がない場合に機能します。奇妙ですが、うまくいきました!


3

私にとってうまくいったのは、ボタンからコードに接続をドラッグする代わりに、

  1. 目的のストーリーボードアイテムをクリックします。
  2. 接続インスペクタを開く(右パネル)
  3. +円からコードの領域にドラッグします。そのようです:

この方法でコードをリンクした後は、それ以降は正常に機能しました。


3

狙い撃ち!

Xibを使用して新しいクラスを追加していたところ、この問題が発生し始めました。ここで答えを確認し、違いがあるかどうかを確認するのに十分な時間を費やしました。

たまたま、ワークスペースに複数のターゲットがあり、多くの場合、それらを切り替える必要があります。

新しいファイルを追加すると、Xcodeで再インデックスが開始されます。しかし、間違ったターゲットを指している場合、インデックス付けは無意味である可能性が高く、ドラッグ中にXcodeを接続すると、クラスを見つけることができなくなります。

要するに

ステップ1。

ターゲット選択

インデックス付けが意味をなすように、正しいターゲットセットがあることを確認してください。


3

これは私のために働きました:

  1. 「実行クリーンビルドフォルダ
    (プレスをし、「オプション」キーを押しながら"へ行く製品のアクセスこれまで」メニュー。
  2. 製品」メニューから簡単な「クリーン」(CMD-SHIFT-K)を実行します。
  3. Xcodeにファイルをコンパイルさせるプロジェクトをビルドします。また、必要に応じてファイルにインデックスを付けます。

余談ですが、これが役に立ったかどうかはわかりませんが、上記の手順(Xcode設定>場所)を実行する前に派生データも削除しました


2

storyBoardでViewControllerを選択し、右側のパネル / "Customer class" / "class"で現在の値を削除してから、コントロールクラス(タイプ: "SampleViewController" ...)を再度追加して、入力します。->それは私のために働く


2

私はこれらすべての答えを試しましたが、私にとっての問題は、Xcodeがファイルのインデックスを作成できないことに関連していました。Xcodeを終了してプロジェクトを再度開くことで、これを修正しました。もちろん、私は上記のすべての解決策を試した後にそれをしました:p



2

これは、私がこの問題を修正するために行った最も簡単な手順です。

  1. プロジェクトをきれいにします
  2. ビューコントローラーに新しいボタンをドラッグします。
  3. プロジェクトをビルドします。
  4. 新しくドラッグしたボタンをクラス(アウトレットまたはアクション)に接続します。
  5. その後出来上がり!他のコンセントをクラスに接続できるようになりました!

1

私のテスト経験として、Xcodeで関連付けられたクラスを削除し、ファイルを再度追加すると、この問題が発生します。


1

通常、これが発生したときは、クラスのコードをまだ保存していません。コードに飛び乗ってcmd + sを押すだけで、問題が正しく修正されることがよくあります。



1

上記の手順はどれもうまくいきませんでしたが、問題を発見したと思います。少なくともそれは私にとってはうまくいったものであり、Xcodeのバグではありません。

アシスタントエディターで、viewControllerのコードがあるウィンドウの上部を確認します。右から3番目のオプションには「手動」と表示されている可能性がありますが、「自動」と表示されているはずです。これを変更すると、問題は解決しました!


1

「...という名前のクラスが見つかりませんでした。アイテムからインターフェイスにドラッグしていないことを確認してください-それがクラス自体にドラッグされていることを確認してください


1

全部試しました!

UIViewControllerのクラス名に「Test」という単語が含まれていないことを確認してください

バグレポートを提出しました。


これが唯一の原因であるとは断言できません。これは、もう1つ注意が必要なことです。
アーロンクライ

すべての派生データを削除して、プロジェクトをクリーンアップしてください。しかし、これはバグであり、あなたは正しいです。
Genevios

0

問題の.mファイルと.hファイルを作り直して、「ViewController」のような一般的な名前ではなく、元の名前を付けようと思います。そのファイルに実行させたいことの行に沿ってさらに何かを試して、View Controller(つまり、「PizzaDecoraterViewController」)で終了します。

次に、それらのファイルに接続するViewControllerを選択します。内のオブジェクトだけでなく、ViewControllerを選択していることを確認してください。下部の黒いバー(「First Responder」と「Exit」のアイコンがあるバー)をクリックします。ViewController全体の輪郭が青になります。次に、Identity Inspectorの[Custom Class]セクションに移動すると、最初のフィールドに「UIViewController」がグレー表示されているはずです。そのフィールドに、接続先の.hまたは.mファイルの名前を入力します(PizzaDecoratorと入力すると、オートコンプリート機能が少し実行されます)。次に、Enterキーを押します。

Assistant Editorを開いたら、ドラッグアンドドロップするファイルが実際に正しいファイルであることを確認してください。

上記のようにすべてを実行した場合、それは機能するはずです。


残念ながらまだ機能しません。私は前にこれをやろうとしたが役に立たなかった。これがスクリーンショットです:i.imgur.com/5ixtcps.png
user2597451

ええと。奇妙な。それらをプログラムで追加してみてください(つまり、@ property(非アトミック、強力)IBOutlet UIView * test;)。次に、その横に小さな円が表示されたら、UIViewにドラッグアンドドロップします。
CaptJak 2013

それは機能し、常にあります(そしてアプリは正常に動作するように見えます)が、自動的に追加されないという問題を解決しようとしています。
user2597451 2013

まあ、それがそのように機能する場合、それは逆に機能するはずです。XCodeのバグ?以前のバージョン(4.6.2など)を入手してインストールしてください。それ以外の場合は、ummmmmmmmmmmmmmm ......ええ....
CaptJak 2013

ええ、それは私が恐れていることです。アンインストールと再インストールがうまくいかなかったので、間違えていたと思いました。Xcodeのコピーをダウングレードする最良の方法は何ですか?
user2597451 2013

0

私はChrisHarrisonの答え@についてコメントとして、それらの事は私のために仕事をしませんでしたが、私にのように導出されたデータを削除することにより、仕事にそれを得たとして、得られたデータを削除https://stackoverflow.com/a/16182672/1449799



0

私の場合、うまくいきました(それは少し奇妙ですが、うまくいきました)は次のとおりです。

データソースを追加してみてください(UITableViewDataSourceなどのViewControllerの拡張機能など)。XcodeはViewControllerをリロードしようとします。次に、プロトコルのいくつかのメソッドを記述し(最初はXcodeがメソッドをオートコンプリートしませんでしたが、手動で記述しました)、次にIBOutletsを追加し、最後にデータソースを削除しました。

例:

class TestViewController:UIViewController{
    // This viewController presents “Could not find any information for  class named ViewController”
}

extension TestViewController:UITableViewDataSource{
    //Add Some methods of the protocol, Xcode will try to autocomplete and then it's going to reload the class, from then you can add your IBOulets / Actions .. And remove this extension if you don't need it otherwise.
}

0

私にとって、カスタムクラスを指定したビューは、インターフェイスビルダーでコンパイルできませんでした。マークされた@IBDesignable

を削除して@IBDesignableからコンセントを追加し、それを@IBDesignable私の場合の問題を解決したものとしてマークします。



0

これを試してみてください

rm -rf ~/Library/Caches/com.apple.dt.Xcode
defaults delete com.apple.dt.Xcode IDEIndexDisable
defaults write com.apple.dt.Xcode IDEIndexEnable 1 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.