2018年3月26日月曜日

Xibを使ってTableViewのCellを登録・その2

前回の記事でxibファイルの作成を説明しました。
今回は実際にコードから登録&呼出しについて。
  • Xcode 8.3.3
  • Swift 3.1

せっかくならdelegate

TableViewを持つViewControllerを定義します。
import UIKit

class ParentViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
  override func viewDidLoad() {
    super.viewDidLoad()

    _TableView = UITableView()
    _TableView?.frame = self.view.frame
    _TableView?.register(UINib(nibName: "ExampleTableViewCell", bundle: nil), forCellReuseIdentifier: "ExampleIdentifier")
    _TableView?.delegate = self
    _TableView?.dataSource = self
    self.view.addSubview(_TableView)
  }

  override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
  }

  // データ数
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 3
  }

  // セルデータを返す
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "ExampleIdentifier", for: indexPath)
    switch indexPath.row {
      case 1:
        cell.textLabel?.text = "1行目"
      case 2:
        cell.textLabel?.text = "2行目"
      case 3:
        cell.textLabel?.text = "3行目"
      default: break
    }
    return cell
  }

  // セル選択
  func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    // セル選択時の処理
  }
}

本来セクション等も合わせて説明したいですが、とりあえず今回は3行のテーブルを表示する処理に限定します。

UITableViewDelegateUITableViewDataSourceを継承し、コード内のメソッドを実装してください(実装しないとエラーになります)

9行目の処理にてTableViewにregisterメソッドにて登録しています
nibNameには前回作成したファイル名を指定します。
後から指定するためのforCellReuseIdentifierも一緒に登録しており、こちらは定数で定義するかメソッドから取得するようにしましょう(今回は簡素にするため直接指定しています)
その辺のプログラマとしての常識はいちいち書くのも面倒なので適宜読み替えて下さい。

26行目の処理にて登録してあるCellを呼出しています。
指定したIDをwithIdentifierに渡してください。

これでxibファイルのレイアウトで3行のTableViewが生成されるはずです!
簡単ではありますが以上になります。質問などあればお気軽にどうぞ!

0 件のコメント:

コメントを投稿