あまのじゃくなHikaruapp(@hikaruapp)です。
swift3で遊んでいて困ったことが、swiftではself.view = selfみたいなことができず、調べ方が悪いのか見当たらず。それなら、自分なりに解決してしまえということで色々とやってみました。
self.viewとは
どんな時に使いたいかと言うと、Objective-Cの時では、viewクラスを必要とするalertview等のコードを他のクラスにまとめたい時に使うんですね。
誰に説明しているんだ(^^;
そんなわけで、どう解決したかと言うと以下の二つ
1.UIViewController
2.Extention
の二つでした。
swiftから入った人には簡単かもしれないけど、Objective-Cバリバリの人にはちょっと難しかったです。
1.UIViewController
では、コードです。
import UIKit class AlertUIViewController { func alert( message: String, myview: UIViewController) { // アラートを作成 let myAlert = UIAlertController(title: "UIViewController", message: message, preferredStyle: .alert) // アラートにボタンをつける myAlert.addAction(UIAlertAction(title: "OK", style: .default)) // アラート表示 myview.present(myAlert, animated: true, completion: nil) } }
簡単でしょう。
2.Extension
めんどくさいのでExtensionしてしまえ!てやつです。
import UIKit protocol AlertExtension { func alertExtention() } extension ViewController: AlertExtension { func alertExtention() { // アラートを作成 let myAlert = UIAlertController(title: "Extension", message: mymessage, preferredStyle: .alert) // アラートにボタンをつける myAlert.addAction(UIAlertAction(title: "OK", style: .default)) // アラート表示 self.present(myAlert, animated: true, completion: nil) } }
流用できませんが変数を参照することができるので、抱き合わせ商法みたいに使うといいかもしれません。
多用するとコードが見づらくなりますね
まとめ
やっとswiftに慣れてきた感じですが、他人が書いたコードを修正していて
ここまでがっつりと書き方の制限をしているのにリークするんだなと、コードの書き方の難しさを痛感しています。
日々修行です
GitHub
サンプルコード – github
コメント