2017-02-19 12 views
2

アプリケーションがSimulatorで実行されても動作しますが、ストーリーボードでプレビューが表示されないのはなぜですか?私のカスタムビューのプレビューがストーリーボードで見えないのはなぜですか?

Swift code:

Simulator and Storyboard:

は、カスタムビューにカスタムビューの背景色とドラッグUIButtonオブジェクトを参照してくださいすることはできません実際の位置(x、y)とその背景色が表示されません。

Android Studioでは、layout.xmlファイルにオブジェクト(カスタムビュー)を追加すると、プレビューが自動的に表示されます.Xcodeでも同じことができますか?

+0

あなたはIBOut参照を持っているオブジェクト(ビュー)のプレビューを見ることができます。 –

+0

私はあなたがモジュールを設定していないと思っています。ちょうどフォーカスモジュールとヒット入力します。 http://i.imgur.com/CbSGhIs.png?1 – ocanal

答えて

2

TL; DR; layoutSubviewsに呼び出し

// Call The Custom Setup Here 
override func prepareForInterfaceBuilder() { 
    setupView() 
} 

prepareForInterfaceBuilderにコールするも動作しますが、実行時に倍数の回呼び出され、prepareForInterfaceBuilderだけ設計因子の変更のための、唯一この目的で呼び出されます。

ロングコード:Xcodeで

@IBDesignable 
class CustomView: UIView { 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     setupView() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     setupView() 
    } 

    override func prepareForInterfaceBuilder() { 
     setupView() 
    } 

    func InitChildPosition() { 
     var i = 1 
     for _view in self.subviews { 
      if _view is UIButton { 
       _view.center.x = (_view.bounds.width/2) 
       _view.center.y = (_view.bounds.height/2) 
      } 

      if _view is UIButton && i == 2 { 
       _view.center.x = self.bounds.width - (_view.bounds.width/2) 
       _view.center.y = self.bounds.height - (_view.bounds.height/2) 
       _view.backgroundColor = UIColor.darkGray 
      } 
      i += 1 
     } 
    } 

    func setupView() { 
     self.backgroundColor = UIColor.black 

     InitChildPosition() 
    } 
} 
0

呼び出しあなたのCustomSetup()

init(frame:)からEDIT

Interface Builderはストーリーボードでビューを作成して位置するinit(frame:)を使用しています。

+0

いいえ動作しません。 – DeveloperBeginner

+0

次に、@ canalが示唆したことを試してみましょう:インスペクタのカスタムクラスセクションであなたのモジュールを 'Current - CustomView'に設定してください。 –

+0

私は私のモジュールを設定して、init(frame :)で私のCustomSetup()を呼び出します。私のストーリーボードでは何も変わりません。 – DeveloperBeginner

0

CustomViewのサブビューをイニシャライザから呼び出されるCustomSetup()に変更しています。ビューは初期化された後にの後にのみサブビューを追加することができるため、ビューにはボタンサブビューがありません。サブビューはに追加する必要があります。

CustomSetup()を後で呼び出すことを延期する必要があります。awakeFromNib()があなたのケースで動作するはずです。

CustomSetup()を完全に削除し、UIButtonをInterface Builderでスタイルするだけです。すべての複雑さがなくても同じ結果が得られます。

関連する問題