オリジナルアプリ作成中に理解できていなかった基礎解説


オリジナルアプリ作成中にうまく実装ができず、詰まってしまった箇所の深掘りをアウトプットします!
もし誤った情報や、もっと効率の良い書き方などがあった場合指摘してくださると助かります!

完成形

※現段階ではオリジナルアプリ自体は完成していません

目次

実装できなかった箇所

今回実装しようとした内容は、曜日表記の日本語化です
自分の作りたいオリジナルアプリのコンセプトが『高齢者の方でも使いやすいアプリ』なので、横文字や英語はなるべく使わないようにしたいため、日本語に変更します。

英語表記のカレンダー

日本語化できなかった記載方法

ViewController.swift
    override func viewWillAppear() {
        super.viewWillAppear()
            // calendarの曜日部分を日本語表記に変更
            calendar.calendarWeekdayView.weekdayLabels[0].text = "日"
            calendar.calendarWeekdayView.weekdayLabels[1].text = "月"
            calendar.calendarWeekdayView.weekdayLabels[2].text = "火"
            calendar.calendarWeekdayView.weekdayLabels[3].text = "水"
            calendar.calendarWeekdayView.weekdayLabels[4].text = "木"
            calendar.calendarWeekdayView.weekdayLabels[5].text = "金"
            calendar.calendarWeekdayView.weekdayLabels[6].text = "土"
    }

参考記事などを見ながら進めていましたが日本語に変化しませんでした😭

overrideの詳細

なぜ実装できないのかエラー文も出ていないので、上記で記載されているoverrideについて詳しく深掘りしてみました

overrideとは、端的の言うと親のメソッドを上書きして使いたい時に使います。
今回の実装内容としては親(デフォルトのカレンダー)の曜日を(日本語表記)に上書きしたいため使い方としては間違っていないはず!

あと残された可能性としてはviewWillAppearの部分か、そもそも日本語に表示するための記載が間違っている
次はviewWillAppearの部分を詳しく深掘りします

UIViewControllerのライフサイクル

viewWillAppearについて調べた結果
結論から言うと、この記載が原因で日本語表記にできていませんでした。
viewWillAppear以外にviewDidLoadviewWillDisappearなどがあります
それぞれ初期表示、画面に表示される直前や直後、画面から非表示になる直後や直前など意味が異なってきます。
今回実装したい内容は初期表示時に変わってもらいたいのでviewDidLoadを使用します

修正後

ViewController.swift
    override func viewDidLoad() {
        super.viewDidLoad()
            // calendarの曜日部分を日本語表記に変更
            calendar.calendarWeekdayView.weekdayLabels[0].text = "日"
            calendar.calendarWeekdayView.weekdayLabels[1].text = "月"
            calendar.calendarWeekdayView.weekdayLabels[2].text = "火"
            calendar.calendarWeekdayView.weekdayLabels[3].text = "水"
            calendar.calendarWeekdayView.weekdayLabels[4].text = "木"
            calendar.calendarWeekdayView.weekdayLabels[5].text = "金"
            calendar.calendarWeekdayView.weekdayLabels[6].text = "土"
    }

修正後の表示

無事曜日の表記を日本語化することに成功しました!

まとめ

今回『問題解決のプロセス』と『基礎知識の重要さ』を実感しました。
基礎が理解できていなかったためどこが間違っているのかすらわかりませんでした、こういった場面は今後もありそうですが今回のようにわからない場所をがむしゃらに調べることの重要性も改めて理解できました!
それらの知識をQiitaでしっかりアウトプットしていきます