Xibを使ってTableViewのCellを登録・その1
Xibを使ってTableViewのCellを登録・その2
- Xcode 8.3.3
- Swift 3.1
コードは同じのを使い回します🙇
元コードを再掲。行数3のテーブルを表示するだけの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) {
// セル選択時の処理
}
}
ではここにセクションを2つ追加してみます。
一応分かりやすいようにセクション1は行数3、セクション2は行数4として設定します。
セクション設定とセクション毎のデータ設定を把握してもらえればと😀
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 numberOfSections(in tableView: UITableView) -> Int {
return 2
}
// セクション名
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 1 {
return "セクション1だよ"
}
else if section == 2 {
return "セクション2になります!"
}
return nil
}
// セクション単位のデータ数
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 1 {
return 3
}
else if section == 2 {
return 4
}
return 0
}
// セルデータを返す
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "ExampleIdentifier", for: indexPath)
if indexPath.section == 1 {
switch indexPath.row {
case 1:
cell.textLabel?.text = "セクション1の1行目"
case 2:
cell.textLabel?.text = "セクション1の2行目"
case 3:
cell.textLabel?.text = "セクション1の3行目"
default: break
}
}
else if indexPath.section == 2 {
switch indexPath.row {
case 1:
cell.textLabel?.text = "セクション2の1行目"
case 2:
cell.textLabel?.text = "セクション2の2行目"
case 3:
cell.textLabel?.text = "セクション2の3行目"
case 4:
cell.textLabel?.text = "セクション2の4行目"
default: break
}
}
return cell
}
// セル選択
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// セル選択時の処理
}
}
通常こんなハードコーディングすることはありません。
JSON等を解析して配列にしたりして利用することとなると思います。
データ数を返すメソッドをcount使ったりすると思うので、適宜改善して頂ければと!
0 件のコメント:
コメントを投稿