2017-03-20 4 views
0

私のtextFieldに上下の境界線を設定する必要があります。私は知識の不足には申し訳なく思っています。どのように私はどのように私は実行可能なboundsプロパティこのコード私はTextFieldを作成するtableviewCellクラスで設定することができます助けてください。プロパティ "bounds"がtableviewCellクラスに見つかりません

class NewAdressForGustCell : UITableViewCell{ 

     var areaTextField : RightPaddingTextField = { 

      var textField = RightPaddingTextField() 

      let topBorder = CALayer() 
      topBorder.frame = CGRect(0, 0, bounds.size.width, 1) 
      topBorder.backgroundColor = UIColor.gray.cgColor 
      textField.layer.addSublayer(topBorder) 

      let bottomBorder = CALayer() 
      bottomBorder.frame = CGRect(0, bounds.size.height-1, bounds.size.width, 1) 
      bottomBorder.backgroundColor = UIColor.gray.cgColor 
      textField.layer.addSublayer(bottomBorder) 

      textField.translatesAutoresizingMaskIntoConstraints = false 
      return textField 

     }() 
} 

答えて

2

問題はboundsが暗黙的self.boundsを意味していることで、あなたはここでやっているようあなたは、selfのプロパティを初期化するの真ん中にあるどこにコード内で(でも、暗黙的に)selfを参照することはできません。現時点ではselfがまだ存在しないため、これは意味があります。まだ初期化中です。

この簡単な回避策の1つはvar areaTextFieldlazyとマークすることです。これは、selfが完全に初期化された後でコードがまで実行されないことを保証するためです。 (あなたははまだselfに明示的を参照しなければならないことに注意してください。)

class NewAdressForGustCell : UITableViewCell{ 

    lazy var areaTextField : RightPaddingTextField = { 

     var textField = RightPaddingTextField() 

     let topBorder = CALayer() 
     topBorder.frame = CGRect(x:0, y:0, width:self.bounds.size.width, height:1) 
     topBorder.backgroundColor = UIColor.gray.cgColor 
     textField.layer.addSublayer(topBorder) 

     let bottomBorder = CALayer() 
     bottomBorder.frame = CGRect(x:0, y:self.bounds.size.height-1, width:self.bounds.size.width, height:1) 
     bottomBorder.backgroundColor = UIColor.gray.cgColor 
     textField.layer.addSublayer(bottomBorder) 

     textField.translatesAutoresizingMaskIntoConstraints = false 
     return textField 

    }() 
} 
+0

。 'self.bounds'が追加されましたが、var areaTextFieldを' lazy'として追加することを忘れました –

+0

はい、両方を行う必要があります。私は私の答えにあなたのコードの作業バージョンを追加しました!編集した回答を確認してください。 – matt

+0

yea私はちょうどあなたの答えを受け入れるのを待っています –

関連する問題