2016-05-16 32 views
0

1つの関数を使用して再現できる複数のUIViewを作成したいとします。同じ関数を使用して複数のUIViewを作成する方法

@IBOutlet weak var contentView: UIView! 

私は私のUIViewにXIBをロードする機能があります:

func createView(layoutConstant: CGFloat) { 
     if let customView = NSBundle.mainBundle().loadNibNamed("TestView", owner: self, options: nil).first as? TestView { 
      contentViewTopLayoutConstraint.constant = layoutConstant 
      contentView.addSubview(customView) 
     } 
    } 

を私は今しようとしている私は、ストーリーボード上に配置し、IBOutletと私のクラスに接続されているのUIViewを持っていますそのうち2つを私の視点に追加しますが、1つだけが表示されます:

createView(0) 
createView(70) 

アイデアはありますか?

+0

別々のfuncを作成し、複数回呼び出します。 – vikash1307

+0

あなたは間違った方法であなたのビューを作成していると思います。 'if let customView = UINib(nibName:" TestView "、bundle:nil).instantiateWithOwner(nil、options:nil)[0]を使って作成することはできますか? TestView'? –

答えて

0

は、私は、彼らが同じ場所にあることが起こるが、両方のビューが追加されていると思いますので、1つだけであるように見えます!迅速かつ汚い方法は、それがこのラインを使用してcreateView方法を更新されますを確認します

contentView.frame.origin.y = layoutConstant 

基本的にはあなたのcontentViewTopLayoutConstraintので、どんな影響を与えることはありませんそのconstant値を設定し、作成しているビューに接続されていません。

0

これらのビューのフレームはすべて同じサイズになるためです。 Origin(x、y)はすべてのビューで同じになるので、重なり合っており、一番上のビューしか見ることができません。

0

コード例では、2つの新しいビューを配置しているcontentViewのレイアウト制約のみを設定しているようです。あなたがする必要があるのは、自分のスーパービューに関連して内側に配置されている2つのビュー、つまりcontentViewにレイアウトの制約を設定することです。

基本的に、レイアウト制約をcustomViewビューに追加します。

0

これは非常に単純です。uiviewを作成してループに反復し、配列に追加して配列インデックスを使用して特定のビューをカスタマイズします。

ハッピーコード..

関連する問題