GitHubにアップしています。
さて、僕流始めます。おかしなところがあったらご指摘お願いします!!!ちなみにコードは動機
UIViewControllerとUITableViewとUITableViewCellのカスタムクラスを一通り作ってみれば、Swiftの感覚がつかめるかなぁと思ったってのが始まりでした。
やること
- UIViewControllerとUITableViewの組み合わせを利用する
- カスタムのモデルを利用する
- カスタムのセルを利用する
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にアップしてます。参考になったらスタープッシュお願いします!
先駆者の記事
ええと、、途中までやったところで、検索したら全く同じことをやっている人がいました。そちらの方が解説が丁寧なので、タイトルでこの記事がヒットして来られた方は、そちらをご参照されても良いと思います。僕の記事もその記事の影響を受けています。ただ、せっかく書いたのでもったいないのでとりあえず僕も記事をアップしこうと思いアップしてます。書き方も違いますしね。