1. ホーム
  2. xcode

[解決済み] IBOutletはnilだが、storyboardでは接続されている、Swift

2022-09-10 20:35:50

質問

Swift 1.1 と Xcode 6.2 を使っています。

UIStoryboardに単数でカスタムな UIViewController サブクラスがあります。その上に @IBOutlet 型の接続があります。 UIView を使用し、そのコントローラから UIView サブクラス をストーリーボード上に作成します。また、そのビューのサブビューにも同様のアウトレットを用意しています。図Aを参照してください。

しかし、実行時には、これらのプロパティはnilになっています(図B)。Interface Builderでアウトレットを接続したことが保証されているにもかかわらずです。

感想 :

  • サブクラスのサブクラスを使用しているため、初期化で何かが台無しになる可能性はありますか?私はどのイニシャライザーもオーバーライドしていません。
  • awakeFromNib: は何らかの理由で呼び出されない
  • サブビューのサブビューに接続されないのかもしれません。

試してみたこと。

  • マッチング @IBOutlet とストーリーボードアイテムの種類に正確に一致します (代わりに UIView )
  • プロパティとアウトレットの削除と再追加

図 A*

図B

*の中の不明瞭なコード Figure A

@IBOutlet private var annotationOptionsView: UIView!
@IBOutlet private var arrivingLeavingSwitch: UISegmentedControl!

ありがとうございました。

どのように解決するのですか?

ストーリーボードは、私が追加した UI を認識しませんでした。実行時に、すべての参照はゼロになっていました。そこで、派生データ フォルダーをクリアしたら、これらの接続が再び機能するようになりました。