LoginSignup
0
1

More than 1 year has passed since last update.

extensionを使ってみた

Posted at

extensionとは?

わかりやすくいうと拡張という意味

こちらの記事がわかりやすいのでリンクを貼っておきます。
https://www.sejuku.net/blog/33334

以前アプリを作るときに参考にしていたソースコードで、

ViewController: UIViewController {}

に、UITableViewDelegate、UITableViewDataSourceを追加して、

ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {}

としていたのですが、後からコードを追加していくとグチャグチャになってしまったことがありました。
その、反省を踏まえてプログラミングスクールで学んだ書き方ではextensionを使ってclassの外に追加したいプログラムを書いていくと、コードがすっきりしてみやすくなりました。

TableViewCellに画像を入れる記事で参考になった記事のリンクも貼っておきます。
https://qiita.com/kapiemon/items/f8a919343a1def729275

ということでこんな感じにコードを修正してみました。


//
//  ViewController.swift
//  IconImageSample
//
//  Created by 橋本純一 on 2022/01/15.
//

import UIKit

class ViewController: UIViewController {

    // 名前を入れる配列
    let placeArray = [
        "寝室", "収納BOX", "車の中", "冷凍庫", "リビング",
        "冷蔵庫", "シューズBOX", "収納スペース", "トイレ", "倉庫・ガレージ"
    ]
    // 画像を入れる配列 .jpgだとか.pngといった拡張子は省略してもよいみたい
    let imageArray = [
        "bead", "box", "car", "freezer", "living",
        "refrigerator", "shoes", "storage", "toilet", "warehouse"
    ]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }


}

extension ViewController: UITableViewDelegate {
    // セルの個数を指定する
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return placeArray.count
    }
}

extension ViewController: UITableViewDataSource {
    // セルに値を設定する
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

        // セルに表示する値を設定
        // テキストラベル
        cell.textLabel?.text = placeArray[indexPath.row]
        // 画像を複数入れる
        cell.imageView?.image = UIImage(named: imageArray[indexPath.row])
        return cell
    }
}

別ファイルにclass構文でまとめた方が良いのですがうまくいかなかった...

Assets.xcassetsに画像を配置

スクリーンショット 2022-01-15 13.28.01.png

サンプルアプリをbuildするとこんな感じになりました。

スクリーンショット 2022-01-15 11.11.11.png

最後に

初心者なもので、まだまだ人の真似をしたり手探りでソースコードを書いて動かしてみるぐらいしかできません。
技術を高めようと日々アウトプットしております。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1