なえT備忘録

何の参考にもならないかもしれませんが、いつかは参考になるようにします

モーダルビューやらUIKit内クラスやらクロージャやら

今日も入門書のサンプルコードを写経しながらなんとなく理解した内容を書いていきます。

多分間違ってるんだろうな、でも追記で直せばいいんじゃ (参考にならなければすみません。)

 

 

/*

 ●モーダルビュー

 present を実行すると、新しい画面がオーバーラップするように画面遷移する。これをモーダルビューと呼ぶ。

 ViewControllerを移動せずに新しい画面、機能を呼び出しできる。なんでSegueと違って別のswiftファイルと値の受け渡しをせんでもいいし

 画面遷移に際した初期化とかもせんでいい これは便利 でもたぶんモーダルは単機能を有する画面(カメラやらアラートやら)のみを想定されてる気がする

 もう少し詳しくなったらちゃんと書く 場数ふんだらすぐわかる

12/4 同日追記 これアラート出す(その画面以外の操作を不能にする)事をモーダルと呼ぶだけで、Segueのオプションとして画面が下から出てくるモーダル遷移もあるらしい 混ざるな

>>>>>>>>>>>>>>>

 present(hoge, animater:true, completion: nil)

 >>>>>>>>>>>>>>>

 第一引数 hoge どの画面を表示させるかを指定。このプログラムだとインスタンス化させたimagePickerControllerを指定

 第二引数 animated:true 表示するときアニメーションをするかしないか

 第三引数 completion:nil モーダルビューの表示が完了した後で、追加で処理を行いたい場合に指示。なければnil

 

 

 ●UIActivityViewController 別のアプリにデータを飛ばしたいときにしたから出てくるあのポップアップ SNS投稿とかにつかう

 第一引数 シェアするコンテンツの配列を指定 第二引数 iOS標準として搭載されていないサービスを拡張する場合に指定。拡張しないならnilを指定

 

 ●UIKitクラスのデフォルト引数あるある おそら別クラスでも同じ名前の引数なら意味は共用のはず(知らずに書いてる)

 handler...そのメソッドを実行した際、任意の処理をクロージャーに入れておけば実行してくれる example. モーダルでダイアログを出して、各選択肢をUIAlertActionで定義するとき、インスタンスを生成する際の引数にhandlerをクロージャで記載すれば 選択肢をおしたときに任意の処理を行える(カメラ立ち上げたりSNS投稿をしたら)

 

 style... .defaultで通常、.cancelでキャンセル処理、.destructiveでデータが消える

destructiveって何に使うんだ...?同一インスタンスの中で保持している全データを空にするとかかな

 

 completion... そのメソッドを実行し、完了した際に任意の処理をクロージャーに入れておけば実行してくれる handlerとの違いはタイミング?

 

 ※UIKitのクラス一覧を書いてくれたQiita記事を見つけた 神かな?2018年の記事だから情報古いだろうけど大概そのままつかえる予感

 https://qiita.com/m-yamada1992/items/24064011779e43b52dc7

 

 

 クロージャ

 まとまった処理を定義できるデータ構造 算数で言うとこのかっこ算

 変数に格納すれば再利用が可能、引数として渡せる(handlerとして渡すとかがわかりやすい、ほかfor文の試行回数とか?)、型として定義することができる

 クロージャは名前や不要な情報をはしょって記述できるので、可読性、軽量化を望める汎用性の高いデータ構造

 >>>>>>>>>>>?

 {(引数) -> 戻り値の方 in

    処理

    return

 }

 >>>>>>>>>>>>

 

 クロージャ中が1行の時、returnを省略できる(暗黙的なreturn)

 引数がない場合、()の中はいらない 返り血もない場合() -> の両方の記載ごと飛ばせる

 sample// let closure = {print("hoge")}

 

 ちなみに変数に格納(代入)したら再利用できる。呼び出し方は 変数名()

 さらに、変数を定義するときの方としても扱うことが可能。この辺でようわからん...わかったらかく

 

 

 参照サイト https://tech.amefure.com/swift-closure#:~:text=Swift%E3%81%AE%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3(Closure)%E3%81%A8,%E5%80%A3%E3%81%A3%E3%81%A6%E8%A8%98%E8%BF%B0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82