【Xcodeのお勉強】今度こそUIViewにUITableViewを貼り付けられた

前回までの記事

UITableViewControllerではなくUIViewにUITableViewをはっつけた時にコードでどう書けばいいか勉強しているところ。delegateをうまく使わないとアプリがクラッシュする(でもまだ原因はわからず)ので、しっかりdelegateを使っていきたいと思う。

UIViewにUITableViewを貼り付け

その他imageとlabelも用意してとりあえずこの画面まで作る

TableViewにdelegateを設定する

Controll押しながら引っ張る。datasourceとdelegateがtable viewにつながっていることがわかる。

カスタムクラスを作る

UIViewController用のカスタムクラスを作成する。これまでと違う部分
・delegateプロトコルを宣言する
・overrideしない


class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var IndexArray = ["a","b","c","d","e","f"]

func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return IndexArray.count
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return IndexArray[section]
}

func sectionIndexTitles(for tableView: UITableView) -> [String]? {
return IndexArray
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "item", for: indexPath) as! TableViewCell
cell.imagePhoto.image = UIImage(named: "apple")
cell.lblUserName.text! = "UserName"
return cell
}

}

TableCell用のカスタムクラスも作る


import UIKit

class TableViewCell: UITableViewCell {

@IBOutlet weak var lblUserName: UILabel!
@IBOutlet weak var imagePhoto: UIImageView!
}

あとは上記カスタムクラスをViewControllerとTableCellにそれぞれ定義すると動いた。長い戦いだった・・・

だんだんインデントをしないこのブログが嫌になってきた。

この記事が気に入ったら
いいね ! しよう