「Xcode」
・エディター画面に2つのファイルを分割して表示したい時は、エディターエリア一番右上のアイコン(四角の中にプラスマーク)をクリック。2画面にした場合のファイルの開き方は、開きたい側の画面をクリックしたあとに開きたいファイル名をクリックすることで表示できる。・Storyboard上のコンポーネントとコントローラーファイル内のクラスと紐付けをしたい場合は、「control」を押しながらマウスで紐付けしたいクラス名の部分までドラッグ&ドロップする。
紐付けが完了すると、「@IBOutlet let var 、、、」というコードが追加される。これは、ストーリーボード上から紐付けされたプロパティであるという表記
・UITableView(テキスト)の中身を定義する際には、UITableViewDatasourceというプロトコルをコントローラーに準拠させる必要がある。
例:
extension コントローラー名: UITableViewDatasource {}
extentionで記述したものは、このままではクラスに適用されないので、クラスに以下を記述する必要がある。
例:
プロパティ名.dataSource = self
簡潔に言うと、テキストを書きたい場合、クラスのプロパティ名にDataSourceを適用したものをselfを使用してあらためてHomeViewControllerとすることで編集できる。extensionに関してはこの2点記述をしなければ適用されない。
メモアプリ用モデル作成
・「モデル」:プログラム上でデータ構造などを表現するためのもの。・「struct」:データ構造を変数で定義しておく。
例:struct MemoDataModel { var text: String, var recordDate: Date }
・作成したモデルを使用するためには。コントローラー内に配列形式で定義する。
例:var memoDataList: [MemoDataModel] = []
(memoDataListという変数を、MemoDataModelからのデータを、配列形式([])で定義)
これだけでは空のデータなので、上記にメモデータを格納するためのメソッドを定義。
複数のデータを取り出し表示させる必要があるので「for in」を使用し順番にデータを取り出し、作成した配列に入れていくメソッドを定義する。
例:let 変数 = モデル名(text: "文字列", recordDate: Date())
memoDataList.append(memoDataModel)
・上記で作成したものは画面が表示される際に呼び出したいため、「viewDidLoad」メソッドに記述。
例:override func viewDidLoad() { メソッド名 }
※「override」は、親クラスに定義されているものを上書きしたい場合に使用
・「indexPath.row」:ビューに表示される要素番号が、0から順に設定される。
メモ詳細画面を作成
・新しく画面を作成する際は、新規画面用のコントローラーファイルの作成(作成中のアプリ名を右クリック→new file)と、ストーリーボードにビューを作成する(UIViewController)2つの手順が必要。・上記2つを作成したら、ビューとコントローラーをつなげるために、ビューをクリックして選択し、エンティティーエリアの「Custom class」のClass名にコントローラー名を記述する。
・「UITableViewDelegate」:ビューの一部をタップしたら画面遷移する機能を作成するためにはこのプロトコルをコントローラーに記述する。ユーザーがUITableViewを操作した際の挙動を指定できるさまざまなメソッドが用意されている。
・「didSelectRowAt」:セルをタップした際に、そのセルのインデックス番号が渡されるメソッド。その番号を取得して必要なデータを返すために使用する必要がある。
・「クラスプロパティ名.delegate = self」:delegateは「extension」での記述になるので、メソッド作成後は「viewDidLoad」内にこれを記述しなければ実行されない。
・「UITableView(配列データなどをリストとして表示)」をコード上で使用できるようにするには、配置したコンポーネントを選択し、ユーティリティエリアの「Identity」→「Storyboard ID」欄にコントローラー名を記述する。
・「UIStoryboard」:コード上でストーリーボードを使用する際には、これをインスタンス化する必要がある。
・「instantiateViewController」:このメソッドを使用してクラスごとインスタンス化する。
例: let 変数名 = storyboard.instantiateViewController(identifier: "", ・・・)
・「navigationController?.pushViewController」:navigationControllerのpushViewControllerというメソッドを使って画面遷移処理を定義している。
・「UINavigationController」では、ヘッダー部分のUIを自動的に構築してくれる。
・「deselectRow」:index番号を渡すことで、そのセルの選択状態を解除する。
例:プロパティ名.deseletRow(at: indexPath, animated: true)
感想
・慣れ! の部分が多い気がする。いざ覚えようと思っても覚えるのって難しいからやっぱり何かアプリを作成しながらわからないことがあったらこのようなアウトプットなどの備忘録を見て思い出しながら実装していくのがいいって、学習が進んでいくたびに思います!と言っても完璧主義チックな自分にとってなかなかそれが難しいんですが、、笑