search
LoginSignup
5

More than 3 years have passed since last update.

posted at

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

はじめに

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]
    }

最後に

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

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
What you can do with signing up
5