web-dev-qa-db-ja.com

Interface Builderでサブビューへのアウトレット接続を作成できません(Xcode 5)

これは他のいくつかの質問と重複しているように見えますが、答えはうまくいきません。

  1. シングルビューアプリを作成しました。
  2. ストーリーボードで、メインビューにサブビューを追加しました。
  3. メインビューにラベルがあり、サブビューに別のラベルがあります。
  4. UIView型のクラスを作成し、サブビューのカスタムクラスとして追加しました。
  5. メインビューのラベルをメインビューコントローラークラスにCtrlキーを押しながらドラッグできます。しかし、サブビューのラベルをctrlキーを押しながらカスタムクラスにドラッグしようとすると、接続が発生しません。
  6. プロパティ情報を入力し、手動で接続しようとしても無駄になりました。

XcodeのInterface Builderの最新バージョンでは状況が少し変更されています。誰かが私に欠けていることを教えてもらえますか?ここには文字通りコードはありません。アウトレットをカスタムクラスのサブビューに接続しようとしてテストしています。

最初の画像は、カスタムクラスを設定してプロパティを追加したが、接続できないことを示しています。

Main view and subview in Interface Builder - custom class is set

2番目の画像は、メインビューのラベルがメインビューのコントローラーに接続されていることを示しています。

Main view and subview in Interface Builder - main view's label is connected

3番目の画像は、サブビューのラベルにアウトレット接続がないことを示しています。

Main view and subview in Interface Builder - cannot connect subview's label

49
Patricia

カスタムビューサブクラスの@interfaceIBOutletプロパティ宣言を手動で記述し、サブビューの基本クラスをIBで定義したと仮定すると、アウトレットサークルからドラッグできます。シーン内のコントロールに戻るコード。

enter image description here

または、あなたが指摘するように、ウォーレン・バートンはこの他の質問への彼の答えでこのテクニックと別の両方を提案しました IBのサブビューに配線できません

119
Rob

この問題は、View Controllerのファイル所有者に関係しています。おそらくIOViewControllerとして設定されているため、その.hファイルでのみプロパティ接続を行うことができます。

できることは、サブビュー用に別の.nibファイルを作成し、そこにサブビューを配置することです。次に、その.nibファイルで、ファイル所有者をIOSubviewにします。プロパティ接続はそこでうまく機能します。次に、プログラムでIOViewControllerにサブビューを追加します。最初にバンドルからnibファイルをロードすることを忘れないでください。

4

これは私がしたことです(Swiftで):

  • 新しいViewControllerを作成しました(例:クラスMyViewController:UIViewController {})
  • StoryBoardで、「シーン」(つまり、すべてのUIコンポーネントのツリービュー)を展開し、「MyViewController」を選択しました
  • 「IDインスペクタ」を使用して、「MyViewController」クラスを割り当てました(デフォルトのUIViewControllerとは反対に)

その後、アクションを割り当てることができました。

Obj-Cにとっても同様のプロセスだと思います。

3
goggelj

サブクラスでアウトレットを作成するのではなく、それが存在するView Controllerでアウトレットを作成します。必要がある #importサブクラスをIDViewController.hに追加し、そこにアウトレットを作成します。

IDViewController.h

#import "IDSubclass.h"
...
@property (strong, nonatomic) IBOutlet IDSubclass *outletName;
1
Josue Espinosa

ストーリーボードを100%にズームします。 50%と言ってズームアウトすると、コンセント接続は機能しません。

0
Makku