【新サービス告知】いつでもどこでもイベントを開催できる。スマホのWebカメラを利用したVRイベントスペースサービス(Meetatcube.com)
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > UITableViewCellをプログラムで動的に作成する

UITableViewCellをプログラムで動的に作成する

サンプル画像

UITableViewをStoryboardで作成する方法は結構ありますが、プログラムだけで作成するサンプルが少なかったので共有します。

UITableViewCellのクラス階層


NSObject

UIResponder

UIView

UITableViewCell

参考:UIKit Framework Reference UITableViewCell Class Reference
参考:custom UITableCellView programmatically using swift
参考:Creating a UITableViewCell programmatically in Swift

やってみた

init処理を二つ(overrideとrequired)追加する必要があるのでハマりました。

まずUITableViewCellの独自クラスを作成します。


import UIKit


class CustomTableViewCell: UITableViewCell
{
    var titleLabel = UILabel();
    var contentLabel = UILabel();
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String!)
    {
        //First Call Super
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        titleLabel = UILabel(frame: CGRectMake(10, 2, 300, 15));
        titleLabel.text = "";
        titleLabel.font = UIFont.systemFontOfSize(12)
        self.addSubview(titleLabel);
        
        contentLabel = UILabel(frame: CGRectMake(10, 20, 300, 15));
        contentLabel.text = "";
        contentLabel.font = UIFont.systemFontOfSize(22)
        self.addSubview(contentLabel);
    }
    
    required init(coder aDecoder: NSCoder)
    {
        super.init(coder: aDecoder)
    }
}

こんな感じです。その次にTableViewのDelegate部分と宣言部分の2箇所を微調整。


  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
        let cell = tableView.dequeueReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as CustomTableViewCell

        cell.titleLabel.text = self.items[indexPath.row]
        cell.contentLabel.text = "ホゲホゲ";
        cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
        return cell
    }
  

DelegateのcellForRowAtIndexPathと...


 //tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
tableView.registerClass(CustomTableViewCell.self, forCellReuseIdentifier: "customCell")

UITableView宣言時のregisterClass...

これで動的に作成したカスタムクラスをStoryboard無しで追加できます。

カスタマイズ

特になし

まとめ

一度作ってしまえば簡単なのですが、、、、結構ハマってしまいましのたでソースが助けになれば嬉しいです。UITableViewの記事はこちらからどうぞ!

↓こんな記事もありますよ!


2021-04-22 14:54:53

かっこいいカルーセル厳選3点!WebGLを使った渋い画像スライダー。

昨日カッコいいスライダーを探す旅にでていました。 よく使われるswiper など、シンプルで使いやすくデザインも良いのですが、何かもの足りない、、、。 そこで調べていくと、webglを使...

2021-04-20 14:46:43

Twillioとは何??skywayとは何が違うのか。webrtcを使う際に判断する情報。

先日webrtc開発で「twillio」といった名前を聞きました。 以前自分でskywayを使ってwebrtcを試していた際に調べた時には、無かったような気もするんだけと、KDDIが絡んでいる...

2021-04-19 13:58:21

先日久々にアップデートした妊娠週刊パパのAndroid版も。アカウント移管したいんだけど、注文ID見当たらないよ。

先日の妊娠、出産、育児関連のアプリ「妊娠週刊パパ」をAndroid studioで再リリースしようと思ってるんだけど、コンパイル失敗してエミュレータで動かせない。 多分sdkとかapiのバージ...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!