2017-09-29 11 views
0

次のコードの問題点は誰でも指摘できますか?Swift4。カスタムの表示がカスタムの初期化で表示されない

class CustomView: UIView { 
     init(_ i:Int, _ view:UIView){ 

      super.init(frame: CGRect.init(x: 0, y: i*300, width:Int(view.frame.size.width) , height: 300)) 
      for i in stride(from: 0, to: 3, by: 1){ 
       var view = UIView.init(frame: CGRect.init(x: (Int(self.frame.size.width/2-50)), y: i*00, width: 100, height: 100)) 

       switch(i%3){ 
       case 0: 
        view.backgroundColor = UIColor.red 
        break; 
       case 1: 
        view.backgroundColor = UIColor.green 
        break; 
       case 2: 
        view.backgroundColor = UIColor.orange 
        break; 
       default: 
        break; 

       } 

       self.addSubview(view) 


      } 

} 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    print("not required to implement requiredInit here") 


} 

モジュラス演算子に基づいて3つの異なる色のビューを表示しようとしています。何らかの理由で、オレンジ色の最後のものだけが表示されます。最初の2つは表示されません。コードはクラッシュしません。 カスタムロジックを必要なinitに移動する必要がありますか?

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

+0

をあなたは 'view'を初期化している行を見てみましょう。 'i * 00'は**常に** 0です。 – the4kman

+0

私の側には恐ろしいタイプミスです。 – user2511882

答えて

0

以下のように確認してください:

init(_ i:Int, _ view:UIView){ 
    super.init(frame: CGRect.init(x: 0, y: i*300, width:Int(view.frame.size.width) , height: 300)) 
    for i in stride(from: 0, to: 3, by: 1){ 
     var subview = UIView.init(frame: CGRect.init(x: (Int(self.frame.size.width/2-50)), y: i*100, width: 100, height: 100)) 

     switch(i%3){ 
     case 0: 
      subview.backgroundColor = UIColor.red 
      break; 
     case 1: 
      subview.backgroundColor = UIColor.green 
      break; 
     case 2: 
      subview.backgroundColor = UIColor.orange 
      break; 
     default: 
      break; 
     } 
     view.addSubview(subview) 
    } 
} 
+0

問題が見つかりました。それでもまだ3番目のビューがうまくいっている理由について質問には答えません。 – user2511882

+0

yはi * 00なので常にyは0です。ビューはもう一方を表示しています –

+0

* facepalm * ..残念です.. ありがとう。答えを受け入れます。 – user2511882

関連する問題