web-dev-qa-db-ja.com

Xcode 4:UIView xibを作成していますが、正しく接続されていません

TableViewCellに埋め込まれるビューを含むペン先を作成しようとしています。インターフェイスと実装ファイルを作成しました、ResultCell.hおよびResultCell.m。それらは在庫があり、すぐに使用でき、コードの変更はありません。

次に、空のXIBファイルを作成し、UIViewをその上にドラッグします。次に、[ファイルの所有者]をクリックし、タイプをResultCellに設定します。ビューをクリックし、そのクラスをResultCellにも設定します。

ここに私が持っている問題があります:

  1. アシスタントエディタービュー(私が住んでいる)を使用する場合、ResultCell.hファイルは、ResultCell.xibファイルを表示しているときに表示されません。 [自動]をクリックしてファイルを選択し、強制的にロードする必要があります。
  2. ビューにラベルをドロップし、Ctrlキーを押しながらクリックして.hにドラッグしてアウトレットを作成すると、次のエラーメッセージが表示されます。「新しいアウトレット接続を挿入できませんでした:見つかりませんでしたResultCellという名前のクラスに関する情報。」

ビューを作成して再作成しようとしましたが、機能していないだけで、忍耐力を失い始めました。どんな助けでも大歓迎です!

84
Tim Sullivan

これは特定の問題では機能しない場合がありますが、新しく作成されたペン先を使用すると、時々このエラーが発生します。以前と同じ名前のnibsとView Controllerを削除して再作成しても問題は解決しませんでしたが、Xcodeを再起動すると解決しました。

81
Defragged

今日も同じような状態になりました。非常に奇妙でした。プロジェクト内の既存のViewControllerクラスにXIB(新規または既存)をアタッチできましたが、新しいViewControllerを作成できず、XIBに適切にアタッチすることはできませんでした。 「アシスタント」機能は機能せず、IB-to-headerfile-connection機能も機能しませんでした。

プロジェクトを閉じて再度開くと、修正されませんでした。
XCodeを終了して再起動しても修正されませんでした。
新しいプロジェクトの作成と機能のテストはうまくいきました。そのため、どこかのキャッシュに何か破損していると思いました。

私の解決策

  • プロジェクトを閉じます。
  • 〜/ Library/Developer/XCode/DerivedDataフォルダーに移動し、作業中のプロジェクトを参照しているすべてのサブフォルダーを削除します。
  • XCodeでプロジェクトを開きます。この問題は今修正する必要があります。

ちなみに、フルクリーンを実行しただけでは問題は解決しないようです。派生データを破棄する必要がありました。私はプレイしていたgitゲームのためにこのポジションに着いたと確信していますが、以前のgitリビジョンに戻すことも役に立たなかったので、どうやって抜け出すのか分かりませんでした。 (それは、プロジェクト自体によって追跡されなかったものでもあるという大きな手がかりでした。)

113
David Pisoni

この問題が発生したばかりで、Xcodeを再起動しても修正されませんでした。プロジェクトからクラスファイルを削除してから追加し直し、動作を開始しました。

14
jasongregori

私はまったく同じ問題を抱えていました。そして、私は試しました:

  • Xcodeの再起動
  • 派生データの削除
  • などなど

どれもうまくいきませんでした。私のために働いたのは、単にすることでした:

  • Projectから「疑わしい」クラスファイルを削除します(参照を削除するだけですか?)
  • それらをプロジェクトに再度追加します

できました!

13
Dr.Kameleon

Xcodeを再起動してもうまくいかない場合は、新しい.mファイルを切り替えてターゲットメンバーシップに戻すことができることがわかりました。

9
Duane Fields

これは私を助けました:

  1. プロジェクトファイルパネル(左側)から、壊れているxibファイルを選択します。
  2. エディタービューから[ファイル所有者]アイコンをクリックします。
  3. プロパティパネル(右側)から3番目のタブ(上部)を選択します
  4. 「カスタムクラス」を指定します

「パネル」が表示されない場合は、ウィンドウの右上隅を見て、適切な「表示」ボタンを有効にしてください。 「表示」ボタンが表示されない場合は、右上のカプセルボタンをクリックしてください。

3
Ivan Dossev

xCodeでオーガナイザーに移動し、プロジェクトをクリックして、派生データの削除...をクリックします

2
Peter Lapisu

.mファイルがen.lprojフォルダー内に移動されていることに気付きました。

Xcodeから.mファイルを削除(参照のみ)し、.mをen.lprojから移動します。問題を解決します。

心配しないで、すべての接続を取り戻します。

2
A.S.

私の場合、対応するヘッダーファイルに「偽の変更」(スペースだけ)を加えるのに役立ちました。

2
jakob.j

今日も同じ問題に遭遇しました。 XCodeを再起動しても問題は解決しませんでした。"Delete"オプションの"Derived Data"projectを使用して、物事を正常に戻すことができました。Organizerにあります。オーガナイザーは、「派生データにはインデックス、ビルド出力、ログが含まれます」と言います。indexまたはbuild outputのいずれかがこの問題の原因であったと思います。

2
Praveen Kumar

おそらく私のために働いたのはこれです..(Xcode v4.5)

これは機能しませんでした

私は.hのインターフェイス定義へのドラッグを制御しようとしていました

@interface SearchViewController : UIViewController

@end

これは機能しました(それが機能するはずだったのかもしれませんが、以前は知りませんでした)開き括弧と閉じ括弧を参照してください。閉じた括弧の後にドラッグアンドドロップを制御します。

@interface SearchViewController : UIViewController
{
}

@end
1
Mouli

Swiftで書かれたプロジェクトでも同様の問題がありました。

私のために働いたのは、このようなコードでIBOutletを設定することでした

@IBOutlet var foo: UIView?

その後、コード行のすぐ隣に表示される小さな円にドラッグして、Interface Builderに接続します。

1
Patrick

この問題は、ファイルを同じ名前の新しいファイルで置き換えるときにほとんど発生するXcodeのバグのようです。 Xcodeは同じ名前の古いファイルの参照を保持しているようです。

とにかく、これを修正する方法は次のようです:

  1. プロジェクトをきれいにする
  2. Project Navigatorビューで(Your Project)をクリックします。ビルドするターゲットのビルドフェーズの下にあるソースのコンパイルに移動します。問題を引き起こしている.mファイルを削除して追加し直します。
  3. または、NIBファイルの[ファイルインスペクター]([ユーティリティ]ビュー)の[ターゲットメンバーシップ]で、ターゲット名のチェックを外してチェックバックします。
  4. 適切に測定するためにXcodeを再起動します。
  5. もちろん、.mファイルだけを削除して追加し直すことでも修正できます。

(手順1と2だけで修正されました。)

1
codeburn
  1. ResultCellはUITableViewCellのサブクラスでなければなりません
  2. UIViewを空のキャンバスにドラッグするのではなく、UITableViewCellをドラッグする必要があります
  3. cellを選択し、itをサブクラスに変更する必要があります
  4. 所有者はほとんどの場合、セルへの出口を持つコントローラーです

新しいセルをロードするたびに、次を呼び出します。

 [[NSBundle mainBundle] loadNibNamed:nibName 
                               owner:controllerWithOutletToCell 
                             options:nil]

ロード後、セルを使用し、ivar/outletをnilに設定して、次のロードの準備をします

他の方法もありますが、これは一般的です

1
bshirley

上記の回避策はいずれもコネクタの問題を解決しなかったため、次のstackoverflowスレッドに遭遇するまでペットプロジェクトを棚上げしました。

https://stackoverflow.com/a/15873770/28468

私は以前のバージョンのXCodeで大規模なプロジェクトに取り組んでおり、インデックス作成をオフにしていました。インデックス作成を再度有効にすることで、私の問題は修正されました。

defaults delete com.Apple.dt.XCode IDEIndexDisable

Interface BuilderのD&D機能を使用できるようになりました。これが他の人に役立つことを願っています...

1
user2846800

私にとって、DerivedDataのクリーニングも削除も問題を解決しました。

UIViewControllerクラスを何度も削除して再作成しようとしましたが、何度も問題が発生しました。

次に、UIViewControllerクラスを再作成し、別の名前を付けました。これで問題は解決しました。

0
Fabian Stark

同じ問題があります。プロジェクトの再構築は私を助けますCommand+B

0
Eugene Mekhedov

@implementationと@synthesizeの間に線を入れてください。ここでの答えのほとんどは共通しています。それは私のために働いた

@implementation 

@synthesize
0
user2371963

これは古いトピックかもしれませんが、将来同じ問題が発生した場合に備えて、関連する.xib、.h、および.mファイルを削除して、新しいファイルを作成してください。私にとって、.hファイルのUIViewControllerは紫色ではなく、バックスペースで入力するだけでも役に立ちませんでした。

0
S.G.

クラスファイルの名前を変更すると、XIBからリンク解除される場合があります。この答えは私がこれを発見するのに役立ちました:

Ctrlキーを押しながらボタンからメソッドにドラッグします。Xcode/ Interface Builder

Identity Inspectorでカスタムクラスが正しく設定されていることを確認します。

0

同様の症状ですが、原因は異なります。

標準ファイルテンプレートのコメント行の1つが//から/になり、ファイルがコンパイルされないため、アシスタントビューにフォーカスがあるときにバックスペースを押したようです。

コメントを修正することで、SDKはファイルを解析し、UIViewControllerとして認識し、アウトレットに追加できました。

SO-この問題がある場合は、ビルドまたは分析を行って、View Controller .hファイルで修正が必要なエラーがあるかどうかを確認してください。その後、他のソリューションを試してください。

0

これが誰かに役立つことを願っています。

派生データフォルダーを削除する必要がありました。 [ウィンドウ]-> [オーガナイザー]-> [プロジェクト]-> [派生データの削除]をクリックする必要があります。

XCODEを再起動します。

あなたは行ってもいいはずです!

0
Ronaldoh1

Swiftを使用して、同様の問題が発生しました。 commentsが問題の一部であることがわかりました。

デフォルトのView Controllerを活用し、いくつかの作業を行った後、最初のView Controller全体をコピーしてViewDidLoad()のみにストリップし、クラスの名前をTestViewControllerに変更することにより、2番目のView Controllerを作成しました。ビルドは機能し、コードが実行されました。すべてが良かった。

UITextFieldをドラッグしてアウトレットを作成したとき、それは許可されませんでした。コメントがまだ「ViewController.Swift」と言っていることに気づいたので、コメントテキストを「TestViewController.Swift」に変更して再構築しました。コンセントに接続できました!

発生したのは、インデクサーがクラス名だけでなくコメントも読んでいて、どういうわけか混乱しているのだろうかと思います。

0
Antonio Ciolino

ここですべて試してみましたが、何も機能しませんでした(Xcode 5の開発者プレビューを使用)。

私のために働いた唯一のことは、この不完全な行をインターフェースファイルに入れることでした:

@property (nonatomic, weak)

何らかの理由で、.xibからのドラッグアンドドロップによるアウトレットとアクションの追加は、その後正常に機能しました。

0
djibouti33

他のプロジェクトからファイルをコピーした場合は、[ターゲットに追加]ボックスをオンにしてください。

0
John67

また、この問題にはさまざまな理由があります... ios以外のテンプレートで新しいココアクラスファイルを作成した場合...

解決策は、それを削除し、正しいテンプレートで再作成することです enter image description here

0
Mihir Mehta

以下の方法でアクション関数を自動生成しようとすると、この問題が発生しました。

enter image description here

しかし、私は以下でそれを行うことができます、最初に手動でアクション関数を記述し、@IBAction関数の領域をドラッグします

0
Kris Roofe

この問題が発生し、上記にリストされていない解決策を見つけました。

私の場合、カスタムビューコントローラーがクラスを認識しなかったため、クラス.hファイルに何か問題があることがわかりました:UIViewController(紫ではなく黒でした)。他のすべてのカスタムView Controllerには、紫色のUIViewControllerがありました。

私の場合、そしておそらくあなたの場合、クラスをターゲット/ビルドフェーズ/コンパイルソースドロップダウンに追加する必要がありました。 .mを追加する必要があります。他のすべての.mはそこにありましたが、これはありませんでした。

追加すると、:UIViewControllerが紫色で表示され、すべて正常に機能しました。

0
Michendo

XCode 7.1では、ソースファイルの別のポイントにコネクタを追加することができました。エラーの1つがクラスであるかのように参照されていました(意味がありませんでした)。その変数の上ではなくその変数の下にコネクタを追加すると、エラーが発生しなくなりました。

0
user2683747

「TARGET」の一部ではない新しいクラスは、これらの答えのいくつかによって示唆されるように、おそらくこれの根本的な原因です。

新しいココアクラスを作成するとき、デフォルトでターゲットに新しいクラスを追加するオプションがデフォルトでチェックされていますが、何らかの理由で、保存をクリックしたときにチェックされない場合、この問題が発生します。

New Class Target

新しいクラスをアプリのターゲットに追加するこれらの回避策はすべて、問題を解決するために機能し、これらすべての「修正」に共通するものです。

XCodeにはいくつかのバグがあるため、新しいファイルがデフォルトでアプリのメインターゲットに追加されない可能性があります。修正はメインのTARGETに「壊れた」クラスを追加するに要約されます

0
Michael Bopp

私の場合、他の依存関係を持つ複数のプロジェクトがあります。派生データを削除するかXCodeを再起動して解決しようとしましたが、うまくいきませんでした。最後に、私は次の方法を試してみましたが、うまくいきます:

ターゲット>ビルドターゲットアーキテクチャのみ>に移動し、デバッグとリリースの両方をNOに設定します。

ワークスペース内のすべてのプロジェクトにこれを設定し、再コンパイルして他のエラーがないことを確認します。意味をなさないかもしれませんが、どういうわけかそれをしました。コンパイル中に、リンカーエラーやシンボルが見つからないなどの他の問題が発生しました。

0
morph85

このクラスビューの* .mファイルの場合、[ファイルインスペクターを表示]を開き、このプロジェクトの[ターゲットメンバーシップ]のチェックを外してから、[クリーン](メニュー[製品]-> [クリーン])

enter image description here

0
Kozlov V