web-dev-qa-db-ja.com

IBOutletをストーリーボードからUIViewサブクラスに接続できません

右クリックしてカスタムUIViewサブクラスファイルからストーリーボード要素にドラッグして接続することはできますが、その逆はできません。これはXcodeのバグだと思います。これを修正するためにできることはありますか?これがすでに発生するのは初めてではなく、迷惑です。

Xcodeのクリーニングと再起動を何度か試しましたが、運はありませんでした。

This does not work これは機能しません(ストーリーボードからSwiftファイル)を右クリックします)

This works これは機能します(SwiftファイルのIBActionからストーリーボードへ)を右クリックします)

ところで、私はXcode 8.1をSwift 3.0。

更新:IBOutlets/IBActionsを接続する方法についての答えを探していません。上の質問(およびスクリーンショット)で述べたように、私はすでにそれらを接続でき、アプリは正常に動作しています。質問は、XcodeがStoryboard> Swift fileから接続できないのに、Swift file> Storyboard。質問が誤解を招く場合は申し訳ありません。

21
Chan Jing Hong

与えられた解決策のいくつかを試した後、最終的に機能したのは、私のMacbookを再起動することです。 XCode側のバグのようです。しかたがない。

3
Chan Jing Hong

この問題は、Xcode 8、およびこれがXcodeのバグであると仮定します。

回避策として:

  • コードでアウトレットを書く@IBOutlet weak var myUiElement: UIView!

  • Ctrl +アウトレットからストーリーボードのUI要素にドラッグ

21
shallowThought

その基本的な、しかし見落としがちです。アウトレットをドラッグしているView Controllerに、作成したカスタムクラスのラベルが付いていることを確認してください。

enter image description here

11
ScottyBlades

Objective-Cでこのようなアウトレットを作成します

@property (nonatomic, weak) IBOutlet UIView *view;

またはSwift 3

@IBOutlet weak var instruction: UILabel?

そして、この画像のように接続します。

enter image description here

サブクラス化により、アクションとアウトレットを接続する通常の方法が機能しない場合があります。この方法は、このような状況に便利です。

4
Nikhil Manapure

IBOutletが接続しないかどうかを確認するもの:

  1. クラスはストーリーボードで定義されていますか?

    UIViewControllerstoryboardを選択し、画面の右側でidentity inspectorそして適切なクラスを割り当てます。

  2. 定義したコンセントのタイプは、storyboardのタイプと一致していますか?たとえば、UIButtonを接続すると、アウトレットは次のようになり、アウトレットのコードを記述して、View Controllerに接続します。

    @IBOutlet weak var theButton: UIButton!
    
1
Idan

次のプロセスで問題を解決しました。

  1. ストーリーボードビューを他のViewControllerと接続します。
  2. 次に、目的のViewControllerをストーリーボードに再接続します。

これがあなたのために働くことを願っています!!

0
Wajahat Hussain