SwiftでUIViewController+UITableView+カスタムセル+カスタムモデルやってみた

SwiftでUIViewController+UITableView+カスタムセル+カスタムモデルやってみたさて、僕流始めます。おかしなところがあったらご指摘お願いします!!!ちなみにコードはGitHubにアップしています。

動機

UIViewControllerとUITableViewとUITableViewCellのカスタムクラスを一通り作ってみれば、Swiftの感覚がつかめるかなぁと思ったってのが始まりでした。

やること

  1. UIViewControllerとUITableViewの組み合わせを利用する
  2. カスタムのモデルを利用する
  3. カスタムのセルを利用する

MZRModel

とりあえず、モデルを作りました。initメソッドで値をセットします。

import Foundation

class MZRModel: NSObject {
    
    var title:NSString
    var message:NSString
    
    init(title: String, message: String) {
        self.title = title
        self.message = message
    }
}

MZRCell

次の段階でUITableViewを扱いますが、その際に、UIStoryboard上で紐付けを行っています。

import UIKit

class MZRCell: UITableViewCell {
    @IBOutlet var titleLabel:UILabel
    @IBOutlet var messageLabel:UILabel
}

UIViewController and UITableView

Objective-Cの時と考え方は全く同じです。UITableViewDelegateは今回は利用していませんが、一応、UIStoryboard上では紐付けているのでプロトコル書いてます。MZRModelを利用して値を30個格納した配列を作成しています。UITableViewとそのデリゲートとUIViewControllerはUIStoryboard上で紐付けをしています。

import UIKit

class MZRViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    
    @IBOutlet var tableView: UITableView
    var list = MZRModel[]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        for i in 0..30 {
            list.append(MZRModel(title:"Swift\(i)", message:"It's my first swift project! Yey!"))
        }
    }
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return list.count
    }
    
    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath:NSIndexPath!) -> UITableViewCell! {
        
        let cell:MZRCell = self.tableView.dequeueReusableCellWithIdentifier("MZRCell") as MZRCell
        cell.titleLabel.text = list[indexPath.row].title
        cell.messageLabel.text = list[indexPath.row].message
        
        return cell
    }
}

これだけでかけちゃう!シンプルな実装はObjective-Cと同じ考え方で行けそうですね。

GitHub

今回書いたコードはGitHubにアップしてます。参考になったらスタープッシュお願いします!

先駆者の記事

ええと、、途中までやったところで、検索したら全く同じことをやっている人がいました。そちらの方が解説が丁寧なので、タイトルでこの記事がヒットして来られた方は、そちらをご参照されても良いと思います。僕の記事もその記事の影響を受けています。ただ、せっかく書いたのでもったいないのでとりあえず僕も記事をアップしこうと思いアップしてます。書き方も違いますしね。

Pocket
LINEで送る

You may also like...