何かと使用頻度の多いTableView。
今回はそのTableViewのに使われるセルのカスタム方法について解説します。
カスタムセルの作り方の説明、扱い方の説明などできるだけ細かく説明していますので、iOSのアプリ開発が初心者の方にも参考になると思います。
環境
・MacOS Ventura 13.0
・Xcode 14.2
・Swift version 5.7.2
何かと使用頻度の多いTableView。
今回はそのTableViewのに使われるセルのカスタム方法について解説します。
カスタムセルの作り方の説明、扱い方の説明などできるだけ細かく説明していますので、iOSのアプリ開発が初心者の方にも参考になると思います。
・MacOS Ventura 13.0
・Xcode 14.2
・Swift version 5.7.2
プロジェクト名SampleProjectとしてプロジェクトを作成しました。
TableViewを追加します。
Main.storyboardを開いて+ボタンをクリック、TableViewをドラッグアンドドロップでViewに設置します。
View内にTableViewが追加されました。
設置したら枠の部分をドラッグして画面いっぱいにTableViewを広げます。
枠いっぱいの部分で点線が表示されるのでその位置で合わせます。
枠いっぱいに広げた後、Viewに設置して上下左右に制約を設定しています。
AutoLayoutの制約の説明については今回は省きます。
以上でTableViewの設置は完了です。続いてカスタムセル作成用のファイルを作成します。
次にカスタムセルを作成します。
プロジェクトフォルダで右クリック→New File...をクリック
Class名は[CustomCell]としました。
Also create XIB fileにチェックを入れてファイルを作成します。
こちらにチェックを入れることでセルのswiftファイルとレイアウト用のxibファイルが一緒に作成されます。
Nextをクリックしてファイルを作成します。
先ほど作成したカスタムセルのレイアウトファイル[CustomCell.xib]でセルのデザインをカスタマイズします。
ImageView、Labelの2つをカスタムセルに配置します。
TableViewを作成したときと同様に+ボタンから検索します。
今回は以下のようにレイアウトしました。
レイアウトを作り終わったらコードの方に紐付け(Outlet)をします。
CustomCell.swiftにImageViewとLabelのOutletを設定します。
レイアウトからコードに向かって右クリックドラッグアンドドロップします。
ImageViewとLabelにそれぞれsampleImageView,sampleLabelと名前をつけました。
これでセル内のuiパーツにアクセスできるようになりました。
TableViewに画像とラベルを設定して表示する
ViewController.swiftに戻り、UITableViewDelegate, UITableViewDataSourceを継承させます。
継承後に赤いボタンが表示されますのでクリックしてください。
クリックするコードが自動生成されて以下のようになります。
delegateとdataSourceの設定を忘れないでください。ViewControllerのコード全体は以下のようになりました。
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var sampleTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.sampleTableView.delegate = self
self.sampleTableView.dataSource = self
self.sampleTableView.register(UINib(nibName: "CustomCell", bundle: nil), forCellReuseIdentifier: "customCell")
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "customCell", for: indexPath as IndexPath) as! CustomCell
cell.sampleLabel.text = "テスト\(indexPath.row)"
cell.sampleImageView.image = UIImage(named: "icon")
return cell
}
}
cell.contentView.layer.cornerRadius = 10
cell.contentView.layer.backgroundColor = UIColor.white.cgColor
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = self.sampleTableView.cellForRow(at: indexPath) as! CustomCell
print(cell.sampleLabel.text)
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 166
}
いかがでしたでしょうか。
今回はカスタムセルの作り方とカスタマイズ方法、カスタムセルのデータの扱い方について簡単に解説しました。
カスタムセルの基本をおさえると、セルのアレンジがかなり自由度が高いことが分かると思います。
カスタムセルを初めて使う方の参考になると幸いです。