Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 343 - カスタムTableViewをコードから パート3

Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
質問 : Swiftで遊ぼう! - 252 - FaceViewプロジェクト始動 - Swiftで遊ぼう! on Hatena

次はイニシャライザです。

override init(style: UITableViewCellStyle,
 reuseIdentifier: String?) {
   super.init(style: style, reuseIdentifier: reuseIdentifier)
        
   let nameLabelRect = CGRectMake(0, 5, 70, 15)
   let nameMarker = UILabel(frame: nameLabelRect)
   nameMarker.textAlignment = NSTextAlignment.Right
   nameMarker.text = "Name:"
   nameMarker.font = UIFont.boldSystemFontOfSize(12)
   contentView.addSubview(nameMarker)
        
   let colorLabelRect = CGRectMake(0, 26, 70, 15)
   let colorMarker = UILabel(frame: colorLabelRect)
   colorMarker.textAlignment = NSTextAlignment.Right
   colorMarker.text = "Color:"
   colorMarker.font = UIFont.boldSystemFontOfSize(12)
   contentView.addSubview(colorMarker)
        
   let nameValueRect = CGRectMake(80, 5, 200, 15)
   nameLabel = UILabel(frame: nameValueRect)
   contentView.addSubview(nameLabel)
        
   let colorVlaueRect = CGRectMake(80, 25, 200, 15)
   colorLabel = UILabel(frame: colorVlaueRect)
   contentView.addSubview(colorLabel)
}

このTableViewCellをインスタンス化するのに、StyleとIdentifierを与えることで、描画させるのですが、Viewクラスの場合、描画という機能を持ち合わせていない。したがって、イニシャライザで描画をする必要があるんです。

まず、スタティックな値「Name」を保持するラベル「nameMarker」を作ります。

CGRect(CGRectMaker)で大きさを設定して、そのデータでframeを設定することでラベルをインスタンス化します。できあがったnameMakerの属性あたるプロパティ(text、font)を設定してから、このラベルをcontentViewに加えると描画されるんです。このcontentViewはViewクラスをインスタンス化した時に必ず持っているベースViewになります。

同様にcolorMarkerを作ります。

nameLabelとcolorLabelはクラス内で既に宣言を終わらしているので、イニシャライザの中で形を与えてやる作業だけで十分です。

これで、この初期化ステップは終了

今日はここまで。