3
5

More than 5 years have passed since last update.

[Swift]カスタムセルを用いて、UserDefaultsの中にあるものを表示する

Posted at

はじめに

Udemyにある【iOS12対応】未経験者が有名アプリ開発者になるiOS 12の全て 20個以上アプリをつくりプロになるという講座のTodoアプリに1つ新しい機能を加えました。
カスタムセルを加えてtodoだけでなく何時までにそのTodoを行うかも確認できるようにしてみました。

やりたいこと

  • CostomCellを用いて1つのセルにつき2つの情報を表示する
  • UserDefaultsに保存されているものを表示する

完成図

スクリーンショット 2019-02-01 16.58.18.png

Cellを表示する側

viewDidLoadに使用するカスタムセルのクラスを登録する

デリゲートメソッドを宣言とカスタムセルのクラスを登録する

ViewController
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UINavigationControllerDelegate {

    @IBOutlet var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
        tableView.register(UINib(nibName:"CostomCellClass",bundle:nil), forCellReuseIdentifier: "Cell")
    }
  • カスタムセルのクラスを登録する スクリーンショット 2019-02-01 16.35.38.png

cellの中身はカスタムセル側のコードを見てねってことを書く

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{}は、セルに表示するものを記載するデリケートメソッド。
今回はカスタムセルに具体的に記載するので、ここにはカスタムセルを見てねってことを書く

ViewController
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CostomCellClass
   cell.cellDisplay(indexNum: indexPath)
   return cell

    }
  • 使用するセルがどれなのか スクリーンショット 2019-02-01 16.41.29.png

カスタムセル側

StoryBordで表示するラベルを用意し関連付けを行う

スクリーンショット 2019-02-01 16.12.03.png

必要な変数を宣言する

セルの中にあるテキストラベル2つと、UserDefaultsに保存されているデータを入れる変数を宣言する

UITableViewCell
    @IBOutlet var todoLabel:UILabel!
    @IBOutlet var timeLabel:UILabel!
    var cellArray = [String]()
    var cellTimeArray = [String]()

UserDefaultsの中身を取り出し配列に入れる

UITableViewCell
override func awakeFromNib() {
        super.awakeFromNib()
        cellArray = UserDefaults.standard.object(forKey: "todo") as! [String]
        cellTimeArray = UserDefaults.standard.object(forKey: "time") as! [String]
    }

セルの中身を記述するコードを書く

ViewControllerからこのメソッドは呼ばれる。
メソッド"cellDisplay"は具体的にカスタムセルの中にあるラベルに表示するものを書く

UITableViewCell
 func cellDisplay(indexNum:IndexPath){

        self.todoLabel?.text = cellArray[indexNum.row]

        self.timeLabel?.text = cellTimeArray[indexNum.row]
    }

最後に

かなりざっくり書いています。
また追記します。
間違っているところ,詳しく書いて欲しいところございましたらコメントお願いします。

3
5
1

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
3
5